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自动审核代码
相关推荐
风哥2号2 小时前
数据库教程FGMT52‑PostgreSQL用户权限与安全管理vicky05172 小时前
解决 ModuleNotFoundError: No module named ‘torch‘ 笔记wuyk5552 小时前
Python实战项目02:学生成绩管理系统(控制台|CSV导出|完整落地)风哥2号8 小时前
数据库教程FGMT27‑MySQL数据库基础知识与体系架构qq5918406858 小时前
uiautomator2自动化安卓手机操作80s7779 小时前
动态代理和静态代理的区别,动态代理怎么提高网络安全性YangYang9YangYan9 小时前
2026 校招商品分析岗位 JD 拆解,核心指标、工具与面试考点Flynt10 小时前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来西安栈上月明软件科技10 小时前
从业务黑话到本体图谱:OAG本体建模五步法(西安老系统AI化改造实战)anxiao_m10 小时前
跨云跨机房大数据迁移怎么选?不同场景工具适配指南