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的状态。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容