上一篇
凌晨2:15,手机突然疯狂震动 📳——监控系统发来警报:"主从同步延迟超过阈值!" 揉着惺忪睡眼连上服务器,看到满屏的红色错误日志:
[ERROR] [MY-011150] [Repl] Semi-sync master failed on net_flush() before waiting for slave reply.
Error_code: MY-011150; Symbol: ER_SEMISYNC_MOVE_BACK_WAIT_POS;
SQLSTATE: HY000
作为一个常年与MySQL打交道的DBA,我知道今晚的睡眠又要泡汤了 😴,这个ER_SEMISYNC_MOVE_BACK_WAIT_POS错误是半同步复制中的"老熟人",但每次出现都可能隐藏着不同的问题。
先快速回顾下半同步复制的工作机制 🔄:
而ER_SEMISYNC_MOVE_BACK_WAIT_POS错误通常发生在主库等待从库ACK时网络出现问题,导致主库不得不回退等待位置,就像快递员送包裹时收件人突然失联 📦❌
ping slave-db01 traceroute slave-db01 netstat -an | grep 3306
网络延迟突然从平时的1ms飙升到350ms!原来是IDC网络设备在进行夜间维护 🚧
SHOW STATUS LIKE 'Rpl_semi_sync%';
关键指标:
grep -A 20 -B 20 "ER_SEMISYNC_MOVE_BACK_WAIT_POS" /var/log/mysql/error.log
发现伴随出现的还有:
[Note] Timeout waiting for reply of binlog (file: mysql-bin.000123, pos: 4578923)
SET GLOBAL rpl_semi_sync_master_timeout = 10000; -- 将超时从默认10秒改为10秒 SET GLOBAL rpl_semi_sync_master_wait_for_slave_count = 1; -- 只需1个从库确认
[mysqld] slave_parallel_workers = 8 slave_preserve_commit_order = ON
SET GLOBAL sync_binlog = 1; SET GLOBAL innodb_flush_log_at_trx_commit = 1;
新增告警规则:
凌晨4:30,看着监控大盘恢复全绿,我泡了杯咖啡 ☕,每次故障都是最好的学习机会,这次又往我的DBA经验包里塞了个新案例,记得定期检查半同步复制的健康度,别等报警响了才处理!
本文由 夕智伟 于2025-08-05发表在【云服务器提供商】,文中图片由(夕智伟)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/546877.html
发表评论