MySQL 5.7配置GTID主从(2)

而比较麻烦的地方是:由于同一个事务在每台服务器上所在的 binlog 名字和 Postion 位置点都不一样,那么怎么找到 slave2 当前同步停止点,对应 New Master 的 master_log_file 和 Master_log_pos 是什么的时候就成为了难题。这也就是为什么 M-S 复制集群需要使用 MMM,MHA 这样的额外管理工具的一个重要原因。

其实也可以找到,只是比较麻烦,我们都知道主从复制环境中 master 的 binlog 复制到 slave 上后 事务执行时的时间戳是不变的,所有 slave 上同一个事务的时间戳都是相同的。可以根据这个时间戳定位到 Master_log_file 和 Master_log_pos。只是很费时间;麻烦。。。

GTID 出现之后:
在 MySQL 5.6 的 GTID 出现之后,处理这个问题就非常简单了。
由于同一个事务的 GTID 在所有的节点上都是一致的,那么根据 Slave 当前停止点的 GTID 就能唯一定位到 New Master 的 GTID。
更简单的是,由于 MASTER_AUTO_POSITION 功能的出现,我们都不需要知道 GTID 的具体值。直接使用

mysql> CHANGE MASTER TO
MASTER_HOST='XXXX',
MASTER_USER='XXXXX',
MASTER_PASSWORD='XXXXX',
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;

命令就可以直接完成 failover 的工作了。使用 GTID 处理这个问题就简单很多。

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/fed8a3b3ec10d8bba62801b2d8bff1fc.html