在线将GTID模式复制改为传统模式复制

发布时间 2023-04-18 14:25:17作者: whiteY

在线将GTID模式复制改为传统模式复制

1、关闭基于GTID模式的复制,调整为传统复制;


STOP SLAVE;
show slave status\G; 

##获取其中的
##Relay_Master_Log_File: mysql-log-bin.000004
##Exec_Master_Log_Pos: 28417624

CHANGE MASTER TO MASTER_AUTO_POSITION=0,MASTER_LOG_FILE='mysql-log-bin.000004',MASTER_LOG_POS=28417624;
START SLAVE;

注意所有从节点需要执行

2、在每一台服务器上设置GTID_MODE=ON_PERMISSIVE;

SET @@GLOBAL.GTID_MODE=ON_PERMISSIVE;

3、在每一台服务器上设置GTID_MODE=OFF_PERMISSIVE;


SET @@GLOBAL.GTID_MODE=OFF_PERMISSIVE;

4、等待所有的服务器上的变量@@GLOBAL.GTID_OWNED为空,表示正在由线程执行的全局GTID集合;


SELECT @@GLOBAL.GTID_OWNED;

注意:On a replica, it is theoretically possible that this is empty and then nonempty again. This is not a problem, it suffices that it is empty once.

5、等待所有的SLAVE上都复制完成匿名事务;

6、在每一台服务器关闭GTID;


SET @@GLOBAL.GTID_MODE=OFF;

7、修改my.cnf的配置;

enforce_gtid_consistency=OFF
gtid_mode=OFF