GLOBAL.ENFORCE_GTID_CONSISTENCY 新补充2种模式:
OFF_PERMISSIVE:不产生GTID事务,Slave同时接受没有GTID的事务和GTID的事务
ON_PERMISSIVE:新事务为GTID事务,SLAVE接受GTID事务也接受不带GTID事务
官档ENFORCE_GTID_CONSISTENCY兼容性列表:
官档GTID_NEXT兼容情况
1、为MySQL 5.6的主库搭建一个未开启GTID的MySQL 5.7从库 ( 设置read_only )
2、利用 pt-table-checksum & pt-table-sync 工具持续进行主从一致性校对和修复数据
3、确保主从数据的一致性后,利用MHA等方式进行主从切换。
切换成功后解除MySQL 5.7的read_only状态,
并且设置MySQL 5.6(旧的主库)为read_only 状态。读写请求都指向MySQL 5.7(新的主库)
4、在MySQL 5.7上在线启用GTID( 简单使用伪代码代替容易记录复习)
4.1、 观察binlog信息
binlog 文件是否有 SET @@SESSION.GTID_NEXT=
主库:
4.2、 在线检查数据库中gtid的操作有无异常
检查周期: 7天或以上
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;
if 没有告警:
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON; 或 SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE; 或 SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
else:
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = off
SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
if 确保匿名事务数量 == 0:
SET @@GLOBAL.GTID_MODE = ON;
从库:
4.3、 在线检查数据库中gtid的操作有无异常
检查周期: 7天或以上
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;
if 没有告警:
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON; 或 SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE; 或 SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
else:
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = off
SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
if 确保匿名事务数量 == 0:
SET @@GLOBAL.GTID_MODE = ON;
STOP SLAVE [FOR CHANNEL 'channel'];
CHANGE MASTER TO MASTER_AUTO_POSITION = 1 [FOR CHANNEL 'channel'];
START SLAVE [FOR CHANNEL 'channel'];
4.4、 主从库
将gtid参数配置到参数文件中
ENFORCE_GTID_CONSISTENCY = ON
GTID_MODE=ON
5、下线关闭MySQL 5.6(旧的主库)