• 欢迎来到本博客,希望可以y一起学习与分享

MySQL主从复制之传统复制与GTID模式之间切换

MySQL benz 4周前 (05-18) 7次浏览 0个评论 扫描二维码
文章目录[隐藏]

GTID模式->传统模式

注意
从库上执行:

发现主从服务器执行set global gitd_mode=off时报错,因为我在前面说过gtid_mode的值有有四种状态(off、off_permissive、on_permissive,on),虽然四种状态支持动态修改,但是不能跳跃修改,即只能严格依次顺序修改

切换之前我们查看下主从gitd_mode参数值:

主/从库都要执行以下命令:

步骤:从库上关闭slave,停止主从复制,然后修改复制模式为传统模式,master_auto_position=0
从库:

同样主库做如下操作:

验证

两边gtid复制模式方式现已关闭,同时开始传统模式,开始验证传统复制模式是否生效:

验证前查记录下从库当前Excuted_Gtid_Set值,方便后面做对比。

在主库插入数据,从库查看插入数据,发现数据已经过来了 ,(从库)再查看Excuted_Gtid_Set的值。

通过对比发现GTID的值没有增加,证明切换成功。

传统模式->GTID模式

在主/从库上修修改enforce_gtid_consistency=warn,确保在error.log中不出现警告信息,如果有需要先修复。
主/从库都执行以下命令

在主/从库上调整enforce_gtid_consistency=on,保证GTID的一致性。

主/从库都执行以下命令

然后在主/从库按照前面的顺序再一次修改回去,直至gtid_mode=on为止。
主/从库都执行以下命令

提示:上述gtid_mode参数值修改必须严格安装顺序依次修改,否则会报错。

查看从库的参数Ongoing_anonymous_transaction_count参数值是否为0,如果为0,意味着没有等待的事务,可以直接进行后面的操作。

说明没有等待提交的事务,可以进入后面的操作。

再次核对GTID相关参数状态:
主服务器:

从服务器:

我们把传统的复制模式改为GTID模式要把传统的复制停掉,然后执行stop slave,然后执行change master to master_auto_position=1

停止slave,查看当前主从状态:

从库执行change master to master_auto_position=1。开启复制状态:start slave

验证

验证切换是否成功,主库插入数据,从库查看数据和Excuted_Gtid_Set对应值是否发生变化:

通过上述查询,发现数据已经复制过来,说明数据同步成功,而Excuted_Gtid_Set的值由“ b8439fb9-4f22-11e8-a24e-000c291a6b52:1-103” 变换为:“b8439fb9-4f22-11e8-a24e-000c291a6b52:1-105”,说明切换成功,因为GTID的值增加了 ,证明开启了GTID的复制方式。

至此MySQL的传统复制方式和GTID方式互相切换演示完成,需要注意的是gtid_mode的值虽然支持动态修改,但是在修改时不能跳跃式的修改,必须得严格按照顺序修改。

参考

MySQL主从复制之传统复制与GTID模式之间切换


文章 MySQL主从复制之传统复制与GTID模式之间切换 转载需要注明出处
喜欢 (0)

您必须 登录 才能发表评论!