在线修改GTID模式
Posted mysql-dba
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在线修改GTID模式相关的知识,希望对你有一定的参考价值。
在线修改GTID模式
1、 在每一台机器上执行命令
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;
这是很重要的一步,必须确保服务器上没有违反GTID规范的SQL,否则当设置为GTID模式后,
这些业务SQL会被拒绝执行,建议设置上面变量值间隔一天后errorLog没有警告,才可进行下一步。
2、 在每一台服务器上执行
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
上面参数表示GTID模式下一些SQL会被拒绝执行,有:create table ...select ....,CREATE TEMPORARY TABLE or DROP TEMPORARY TABLE,在一个事务中更新事务表和非事务表。
3、 在每一台服务器上执行
SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
表示采用匿名事务记录binlog,slave可以兼容GTID事务和匿名事务,执行该命令没有顺序可言,但是必须每个机器都要执行。
4、在每一台服务器上执行
SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
表示采用GTID事务记录binlog,slave可以兼容GTID事务和匿名事务,执行该命令没有顺序可言,但是必须每个机器都要执行。
5、等待步骤5前产生的事务(匿名事务)全部在slave都已应用完成
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复制了
6、在每一台服务器上执行
SET @@GLOBAL.GTID_MODE = ON;
7、在所有slave上执行
stop slave;
CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
START SLAVE;
8、在每一台服务器上修改my.cnf
gtid_mode = on
enforce_gtid_consistency = 1
以上是关于在线修改GTID模式的主要内容,如果未能解决你的问题,请参考以下文章
在线建立或重做mysql主从复制架构方法(传统模式和GTID模式)
不停应用服务,在线建立或重做mysql主从复制的案例,包含一般模式和GTID模式