系统:centos7
主库:192.168.225.128:3307
从库1:192.168.225.129:3307
主从复制传统复制已配置完毕mysql
1.要求全部的mysql版本5.7.6或更高的版本。 2.目前拓扑结构中全部的mysql的gtid_mode的值为off状态。 3.以下的操做步骤都是有序的,不要跳跃着进行。
补充一下全局系统变量GTID_MODE变量值说明:sql
OFF 新事务是非GTID, Slave只接受不带GTID的事务,传送来GTID的事务会报错 OFF_PERMISSIVE 新事务是非GTID, Slave即接受不带GTID的事务也接受带GTID的事务 ON_PERMISSIVE 新事务是GTID, Slave即接受不带GTID的事务也接受带GTID的事务 ON 新事务是GTID, Slave只接受带GTID的事务
须要注意的是,这几个值的改变是有顺序的,即centos
off<--->OFF_PERMISSIVE<--->ON_PERMISSIVE<--->ON
不能跳跃执行,会报错。函数
前提:测试步骤中S1默认都是打开log-bin选项的,
操做步骤测试
M:mysql> set @@global.enforce_gtid_consistency=warn; S:mysql> set @@global.enforce_gtid_consistency=warn;
注意:执行完这条语句后,若是出现GTID不兼容的语句用法,在错误日志会记录相关信息,那么须要调整应该程序避免不兼容的写法,直到彻底没有产生不兼容的语句,能够经过应该程序去排查全部的sql,也能够设置后观察错误日志一段时间,这一步很是重要。centos7
M:mysql> set @@global.enforce_gtid_consistency=on; S:mysql> set @@global.enforce_gtid_consistency=on;
M:mysql> SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE; S:mysql> SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
M: Mysql> SET @@GLOBAL.GTID_MODE = on_permissive; S: Mysql> SET @@GLOBAL.GTID_MODE = on_permissive;
Mysql> SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT'; Mysql> SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
M:show master status; S:show slave status\G 或者或者slave直接用函数: SELECT MASTER_POS_WAIT('mysql-binlog.000005',154);
返回结果大于等于0就说明匿名事务已经所有复制完成spa
如以前产生的全部匿名事务已经所有被执行完毕,甚至二进制日志中也不要有匿名事务,能够经过flush logs,并让mysql来自动清理旧的二进制日志文件。日志
M: mysql> SET @@GLOBAL.GTID_MODE = ON; S: mysql> SET @@GLOBAL.GTID_MODE = ON;
增长code
gtid-mode=ON enforce_gtid_consistency=on