CentOS 7部署MySQL 5.7主从复制(传统方式及GTID)

  

记录?(^ ? ^ *)1,二进制文件和位置的复制;2,基于全局事物标识符(GTID)两种方式的主从复制:(测试环境为CentOS 7.3)

  

一、基于二进制日志文件(传统方式)

  

(1),工作原理:

  
 <代码> 1,主人把数据库操作记录到二进制日志,并发送给奴隶的I/O线程;
  2,奴隶的I/O线程把接收到二进制日志存储到本地的中继日志;
  3,奴隶的SQL线程从继电器日志读取信息并在本地更新。 
  

(2),具体配置

  

<强>主数据库(主人,192.168.100.51):

  
 <代码> 1,修改配置文件
  # vi/etc/my.cnf
  (mysqld)
  #该id需设置为唯一
  服务器id=1
  #开启二进制日志
  log-bin=bin-log
  
  2、创建复制账户
  
  进入mysql
  创建用户“奴隶”@“%”被“slavepass”;
  格兰特复制奴隶*。*“奴隶”@“%”;
  
  3、查看主人二进制文件名及位置
  
  显示主状态; 
  

<强>从数据库(奴隶,192.168.100.52):

  
 <代码> 1,修改配置文件:
  
  # vi/etc/my.cnf
  (mysqld)
  #该id需设置为唯一
  服务器id=2
  
  2、配置连接
  
  #与主数据库创建的复制账户对应
  
  mysql>改变主
  MASTER_HOST=' 192.168.100.51 ',
  MASTER_USER=芭ァ?
  MASTER_PASSWORD=' slavepass ',
  MASTER_LOG_FILE='和主服务器文件对应的,
  MASTER_LOG_POS='和主服务器pos对应的;
  
  3,启动奴隶
  
  mysql>开始的奴隶;
  
  4、查看奴隶状态
  
  mysql>显示奴隶状态\ G;
  
  查看奴隶SQL线程和IO线程是否正常运行 
  

(3)、测试

  
 <代码>在主数据库创建数据库,新增加表及数据,查看从库是否更新即可。 
  

二,基于全局事务标识符复制(GTID)

  

(1),原理

  

GTID是MYSQL 5.6引用的新特性,在数据库事务提交时会在binlog中产生一个对应的GTID,主从
复制时,从数据库会通过GTID来确定同步的位置,不用在去找文件和位置。为什么说是全局,因为传统方式使用的pos在主人和奴隶当中是不一样的。而对于GTID,对于相同的事务在主人和奴隶当中是一致的。这样,当一个主宕机后,slave1提为掌握后,slave2不用在去找slave1的文件和位置。

  

(2),具体配置

  

<强>主数据库(主人,192.168.100.51):

  
 <代码> 1,修改配置文件
  
  # vi/etc/my.cnf
  (mysqld)
  #该id需设置为唯一
  gtid_mode=对
  服务器id=1
  #开启二进制日志
  log-bin=bin-log
  enforce_gtid_consistency=对
  
  2、创建复制账户
  
  mysql祝辞格兰特复制奴隶*。*“奴隶”@“%”被“slavepass”,  
  

<强>从数据库(主人,192.168.100.52):

  
 <代码> 1,修改配置文件
  
  # vi/etc/my.cnf
  
  (mysqld)
  gtid_mode=对
  server_id=2
  enforce_gtid_consistency=对
  
  2、配置复制连接
  
  mysql>改变主
  MASTER_HOST=' 192.168.100.51 ',
  MASTER_USER=芭ァ?
  MASTER_PASSWORD=' slavepass ',
  MASTER_AUTO_POSITION=1;
  
  3,启动奴隶并查看
  
  mysql祝辞开始的奴隶;
  mysql祝辞显示奴隶状态\ G;  

CentOS 7部署MySQL 5.7主从复制(传统方式及GTID)