mysql半同步复制问题

问题描述

通过xtraback新备份并还原的slave节点通过change master to动态添加到集群中后,主库执行SQL时卡住。

问题分析

登录主库执行 show processlist;发现有一行为Waiting for semi-sync ACK from slave,马上定位到半同步复制问题。将主库半同步关闭后,SQL执行成功。因需保证数据的一致性,半同步必须要开启,故继续排查原因。

问题处理

检查主库的半同步复制正常。
然后去从库检查从库的半同步配置。发现从库"rpl_semi_sync_slave_enabled"为"off"状态。


image.png

手动set global rpl_semi_sync_slave_enabled=1后,show global variables like 'rpl_semi_sync_slave_enabled';显示已经打开。主库执行命令仍然卡住。

image.png

继续排查问题:
show status like 'semi';发现Rpl_semi_sync_slave_statusoff状态。
从库半同步启动失败了。从库执行set global rpl_semi_sync_slave_enabled=1;stop slave io_thread;start slave后,状态正常了。

问题总结

从库半同步配置后需要重启io_thread。配置完从库的半同步不仅要查看variables,也要确认status的状态。

你可能感兴趣的:(mysql半同步复制问题)