上一篇
📢 最新动态(2025-08)
近期有大量DBA反馈在MySQL 8.0.30+版本中遇到半同步复制中断问题,特别是云数据库场景下频繁触发MY-011171
错误,官方已在8.0.33版本中优化了相关超时机制,但旧版本仍需手动处理。
当主从复制使用半同步(semisynchronous)模式时,从库可能突然收到如下报错:
ERROR 3085 (HY000): ER_SEMISYNC_STOP_BINLOG_DUMP_TO_SLAVE Message: Master server stopped binlog dump to slave server_id=%lu, thread_id=%lu
此时从库的IO线程会停止工作,复制延迟飙升📈,业务可能受影响。
rpl_semi_sync_master_timeout
值过小或slave_parallel_workers
配置不合理 -- 在主库临时关闭半同步(紧急恢复用) SET GLOBAL rpl_semi_sync_master_enabled = 0; -- 从库重启IO线程 STOP SLAVE IO_THREAD; START SLAVE IO_THREAD; -- 确认复制恢复后重新开启半同步 SET GLOBAL rpl_semi_sync_master_enabled = 1;
调整超时阈值(建议生产环境设置)
SET GLOBAL rpl_semi_sync_master_timeout = 30000; -- 单位毫秒,默认10000
优化从库性能
slave_parallel_workers
(建议4-8) 网络加固
ping -i 0.2 主库IP
监控告警配置 📟
# 监控半同步状态 SHOW STATUS LIKE 'Rpl_semi_sync%';
版本升级建议
MySQL 8.0.33+版本已优化以下行为:
rpl_semi_sync_master_wait_for_slave_count
定期演练
通过STOP SLAVE; START SLAVE;
模拟故障,验证恢复流程
Q:能否彻底禁用半同步?
A:可以但⚠️不推荐!异步复制可能丢数据,建议用loss-less半同步
模式:
SET GLOBAL rpl_semi_sync_master_wait_point = 'AFTER_SYNC';
Q:错误日志里还看到ER_SEMISYNC_MASTER_GOT_REPLY_AFTER_ROLLBACK
?
A:这是关联错误,通常主库事务回滚导致,需检查应用端的事务逻辑🔍
半同步复制的工作流程:
1️⃣ 主库执行事务 → 2️⃣ 发送binlog给从库 → 3️⃣ 从库写入relay log后ACK → 4️⃣ 主库收到ACK才返回客户端
当步骤3超时,主库会:
ER_SEMISYNC_STOP_BINLOG_DUMP
警告 🎯 总结
遇到MY-011171错误时,优先检查网络和从库负载,新版MySQL建议升级,保持监控,早发现早处理!
ℹ️ 本文方法适用于MySQL 5.7-8.0版本,其他数据库请参考对应文档。
本文由 庞端丽 于2025-08-01发表在【云服务器提供商】,文中图片由(庞端丽)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/505046.html
发表评论