MySQL控制软件及GTID功能介绍

MySQL 5.6 版本引入了GTID功能,使得MySQL在主从复制数据一致性和数据安全方面有了巨大的提升,然而对于已经存在的基于binlog+position方式复制的MySQL集群,想要开启GTID,必须要停业务,重启MySQL,这一过程是很不友好的。

首先从重启MySQL来介绍,开启、关闭、重启MySQL的方式有很多,其中最方便的方法如下:

打开iis7服务器监控工具

不管是重启、开启、关闭MySQL,都可以用它一键完成。

幸运地是,MySQL 5.7版本,提供了在线开启GTID的功能,可以在不中断业务、不重启MySQL的情况下开启GTID,下面具体介绍,MySQL 5.7 如何在线开启和关闭GTID。

MySQL 5.7 在线开启GTID:

确认MySQL集群中所有节点的版本都是 5.7.6 及以上,且所有节点的gtid_mode为OFF。在每个MySQL节点上设置 SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN; 观察一段时间MySQL的错误日志,有没有warnings,如果没有,进入下一步。如果有warnings,说明业务可能使用了与gtid不兼容的特性,要根据具体的日志信息来排查,直到没有warnings日志产生为止。在每个MySQL节点上设置 SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;在每个MySQL节点上设置 SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;在每个MySQL节点上设置 SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;在每个MySQL节点上,执行 SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT'; 确认所有节点上的该值为0,才能进入下一步。在每个MySQL节点上,执行 SET @@GLOBAL.GTID_MODE = ON;在每个MySQL节点上,把 gtid_mode=ON, ENFORCE_GTID_CONSISTENCY=ON 添加到配置文件 my.cnf。在每个MySQL从库上,执行STOP SLAVE;CHANGE MASTER TO MASTER_AUTO_POSITION = 1;START SLAVE;检查MySQL集群所有节点,基于GTID的主从复制是否正常。MySQL 5.7 在线关闭GTID:

确认MySQL集群中所有节点的版本都是 5.7.6 及以上,且所有节点的gtid_mode为ON。在每个MySQL从库上,执行STOP SLAVE;CHANGE MASTER TO MASTER_AUTO_POSITION = 0, MASTER_LOG_FILE = {file}, MASTER_LOG_POS = {position};START SLAVE;在每个MySQL节点上,执行 SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;在每个MySQL节点上,执行 SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;在每个MySQL节点上,执行 SELECT @@GLOBAL.GTID_OWNED;确认该值为空,才能进入下一步。在每个MySQL节点上,执行 SET @@GLOBAL.GTID_MODE = OFF;在每个MySQL节点上,把 gtid_mode=OFF, ENFORCE_GTID_CONSISTENCY=OFF 添加到配置文件 my.cnf。检查MySQL集群所有节点,基于binlog+position主从复制是否正常。

MySQL GTID已是标配,也是大势所趋,对于使用MySQL 5.6 及以上版本的用户,强烈建议打开基于GTID的主从复制。

猜你喜欢

转载自www.cnblogs.com/09Internet/p/11388171.html