MySQL主从复制断开后不会自动持续重连,默认仅首次尝试;需调小slave_net_timeout(建议10~30秒)并重启IO线程,配合MASTER_CONNECT_RETRY和MASTER_RETRY_COUNT参数及监控才能实现快速、可靠重连。主从复制断开后,MySQL 会不会自动重连会,但默认行为非常保守:只在 CHANGE MASTER TO 后首次启动时尝试一次连接,失败就停在 Slave_IO_Running: No,不会持续重试。真正起作用的是 MASTER_RETRY_COUNT 和 MASTER_CONNECT_RETRY 这两个参数,它们控制 IO 线程在连接失败后的重试逻辑,但很多人误以为只要开了 relay_log_recovery=ON 或启用了 GTID 就能"自动恢复",其实不是。MASTER_RETRY_COUNT 默认是 86400(24 小时),但这个值只有在连接被明确拒绝(比如端口不通、认证失败)时才生效;如果网络只是暂时中断(TCP 连接已建立但后续包丢弃),MySQL 可能卡在 "reading event" 状态,根本不会触发重试逻辑MASTER_CONNECT_RETRY 默认是 60 秒,即每次重试前等待的时间,不是超时时间------连接建立超时由 slave_net_timeout 控制,它默认是 3600 秒(1 小时),这才是导致"断了等很久才重连"的元凶GTID 模式下,即使重连成功,如果主库的 binlog 已被清理,从库仍会报错 Could not find first log file name in binary log index file,此时光靠重试没用,得人工干预如何让 IO 线程更快感知并重连核心是缩短 slave_net_timeout,它决定了 IO 线程在收不到主库数据时,多久判定为"网络异常"并主动断开当前连接、进入重试流程。这个参数必须在从库上动态设置,并重启 IO 线程才生效:SET GLOBAL slave_net_timeout = 30;STOP SLAVE IO_THREAD;START SLAVE IO_THREAD;设太小(如 5)可能导致误判:主库写入空闲期稍长就会频繁断连重试,增加握手开销设太大(如默认 3600)会导致抖动后长达一小时无响应,复制延迟飙升且不报警生产建议值:10~30 秒,配合监控(比如定期查 Seconds_Behind_Master 和 Slave_IO_Running)可平衡灵敏度与稳定性重连失败后,错误日志里常见但容易忽略的关键线索别只盯着 ERROR 2003 (HY000) 这类连接拒绝错误。网络抖动更常表现为: AI Code Reviewer AI自动审核代码
相关推荐
大数据魔法师16 小时前
Streamlit(十二)- API 参考文档(五)- 输入组件SAP上海工博云署16 小时前
2026年中小企业SAP服务商选型技术解析涛声依旧-底层原理研究所16 小时前
Node.js在高并发低延迟场景中的优势RestCloud16 小时前
版本迭代丨谷云科技ETLCloud V4.2版本更新速览凯丨17 小时前
200 行 Python 训练一个 GPT:Karpathy 的极简主义 AI 教育实验Adair_z17 小时前
[SEO艺术重读] 第13篇 SEO教育与研究Mr. zhihao17 小时前
BM25 混合检索详解:为什么向量检索不够,还要加一个关键词检索悟乙己17 小时前
python DoWhy 库使用案例: SaaS 公司的客服案例不爱吃糖の糖糖17 小时前
RAG 04:向量数据库与索引算法逍遥德17 小时前
PostgreSQL --- JSON 函数详解