记录?(^ ? ^ *)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; 代码>