一、 在每一台机器上执行命令服务器
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN; 这是很重要的一步,必须确保服务器上没有违反GTID规范的SQL,不然当设置为GTID模式后, 这些业务SQL会被拒绝执行,建议设置上面变量值间隔一天后errorLog没有警告,才可进行下一步。
二、 在每一台服务器上执行code
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON; 上面参数表示GTID模式下一些SQL会被拒绝执行,有:create table ...select ....,CREATE TEMPORARY TABLE or DROP TEMPORARY TABLE,在一个事务中更新事务表和非事务表。
三、 在每一台服务器上执行事务
SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE; 表示采用匿名事务记录binlog,slave能够兼容GTID事务和匿名事务,执行该命令没有顺序可言,可是必须每一个机器都要执行。
四、在每一台服务器上执行table
SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE; 表示采用GTID事务记录binlog,slave能够兼容GTID事务和匿名事务,执行该命令没有顺序可言,可是必须每一个机器都要执行。
五、等待步骤5前产生的事务(匿名事务)所有在slave都已应用完成ast
6.1)在master上执行:show master status;记录file和pos 6.2) 在全部slave执行:SELECT MASTER_POS_WAIT('file', pos);若是执行结果都为0表示都已经应用完成,能够进行下一步,不然须要一直等待完成。 方法二:在每一台slave上都执行show master status;查看Executed_Gtid_Set是否有值,若是不为空了,说明已经开始使用GTID复制了
六、在每一台服务器上执行变量
SET @@GLOBAL.GTID_MODE = ON;
七、在全部slave上执行file
stop slave; CHANGE MASTER TO MASTER_AUTO_POSITION = 1; START SLAVE;
八、在每一台服务器上修改my.cnfselect
gtid_mode = on enforce_gtid_consistency = 1