一、背景描述
客户环境:在一套MGR一个secondary(C节点)添加备库(D节点),运行一段时间后,C、D节点间主备间状态正常,但是C、D节点数据不同。经查MySQL error日志,C、D节点数据不同步时间与MGR集群Priamry(A 节点)、secondary(B节点)切换时间一致。 检查各节点配置发现B节点的server_id与D节点server_id导致。
二、问题复现
组复制配置
各节点server_id,其中test02与test04的server_id一致
复制状态:
此时对test01节点进行写入,而test03与test04的复制状态正常的。从通道中Executed_Gtid_Set可以看出
当MGR中Primary 节点从test01切换为test02时:
集群状态如下
再对集群进行写入:
查看test03、test04复制通道,可以看到复制通道时正常的,但是他并没有数据写入。
三、总结
关于server_id参数,为每个复制服务器指定唯一的服务器 ID。因此它必须与其他复制拓扑中源或者副本不同。
本次验证可以看到即使复制通道正常,数据也不会同步。relay-log可以看到同步server_id遇到一致时只记录了一下binlog位点信息并无数据。