暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL5.7在线修改GTID模式

原创 百分 2023-09-15
352

1.     检查主从库中是否有不支持GTID事务的执行

本步骤在主从库机器执行。

设置ENFORCE_GTID_CONSISTENCY = WARN,最好是在有事务执行的时间段,检查日志是否有告警产生

mysql>SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;

如果步骤一没有告警产生,设置ENFORCE_GTID_CONSISTENCY为ON。

2.     主从库设置ENFORCE_GTID_CONSISTENCY为ON

本步骤在主从库机器执行。

mysql >SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY=ON;

3.     主从库设置GTID_MODE = OFF_PERMISSIVE

本步骤在主从库机器执行。

OFF_PERMISSIVE:不产生GTID事务, Slave接受不带GTID的事务(匿名事务)也接受带GTID的事务

mysql>SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;

4.     主从库设置GTID_MODE = ON_PERMISSIVE

本步骤在主从库机器执行。

ON_PERMISSIVE:新事务为gtid事务,slave接受GTID事务也接受不带GTID事务

mysql>SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;

5.     确保在线的匿名事物数为0

本步骤在主从库机器执行。

mysql >SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';

注:若该命令结果不为0,请等待至结果为0,才可向下执行。

6.     主从库设置GTID_MODE=ON

本步骤在主从库机器执行。

mysql >SET @@GLOBAL.GTID_MODE = ON;

7.     从库重启slave,设置为GTID模式

本步骤在从库机器执行。

mysql >stop slave;

mysql >change master to master_auto_position=1;

mysql >start slave;

8.     查看主从状态

本步骤在从库机器执行。

mysql >show slave status\G;

注:Slave_IO_Running、Slave_SQL_Running为双Yes;Auto_Position=1;Retrieved_Gtid_Set和Executed_Gtid_Set显示为GTID号表明模式修改完成。

9.     要永久启用需在my.cnf配置文件中添加参数

本步骤在主从库机器执行。

gtid-mode=ON

enforce-gtid-consistency=1

10.     设置主从复制的多线程复制

本步骤在从库机器执行。

mysql> stop slave;

mysql> set global slave_preserve_commit_order=1;

mysql> set global slave_parallel_type=LOGICAL_CLOCK;

mysql> set global slave_parallel_workers=4;

mysql> start slave;

mysql> show processlist;

说明:

slave_preserve_commit_order 参数在多线程复制环境下,能够保证从库回放relay log事务的顺序与这些事务在relay log中的顺序完全一致,也就是与主库提交的顺序完全一致。

该参数起作用的前提条件是开启多线程复制:

slave_parallel_type=LOGICAL_CLOCK

slave_parallel_workers>0

 更新配置文件my.cnf

slave_preserve_commit_order     = 1

slave_parallel_type          = LOGICAL_CLOCK 

slave_parallel_workers        = 4

至此完成。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论