如何调整MySQL主从复制超时重连时间参数_MASTER_CONNECT_RETRY的配置?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1292个文字,预计阅读时间需要6分钟。
plaintextMASTER_CONNECT_RETRY是CHANGE MASTER TO语句中的一个参数,它指定从库在IO线程断开后,等待多长时间再次发起连接尝试。单位是秒。它不控制重试多少次,这个由MASTER_RETRY_COUNT决定。默认值是60秒,对于多数生产环境来说,这个时间太长——网络波动恢复通常在几秒内,等待一分钟才重试会导致直接拉爆。
常见错误现象:Seconds_Behind_Master 突然跳涨、Slave_IO_Running: No 持续数分钟才恢复;查 SHOW SLAVE STATUS 发现 Last_IO_Error 是 “error connecting to master”,但很快又好了——说明不是主库宕机,而是单次连接失败后卡在默认 60 秒重试上。
- 局域网稳定环境(RTT 10~
15秒较合理 - 跨可用区或云厂商间(RTT 20–80ms):建议
30~60,避免毛刺触发频繁重连 - 若主库偶发大事务(如批量 delete 超过 30 秒无 binlog 输出),需同步调高
slave_net_timeout,否则 IO 线程会因“空闲超时”先断开,再按MASTER_CONNECT_RETRY间隔重试——此时这个参数就变成“断开后等多久再连”,而非“连不上等多久再试”
必须和 slave_net_timeout 配合使用,单独改没用
slave_net_timeout 才是真正触发重连的开关:它定义的是从库与主库之间 TCP 连接的**空闲超时时间**。
本文共计1292个文字,预计阅读时间需要6分钟。
plaintextMASTER_CONNECT_RETRY是CHANGE MASTER TO语句中的一个参数,它指定从库在IO线程断开后,等待多长时间再次发起连接尝试。单位是秒。它不控制重试多少次,这个由MASTER_RETRY_COUNT决定。默认值是60秒,对于多数生产环境来说,这个时间太长——网络波动恢复通常在几秒内,等待一分钟才重试会导致直接拉爆。
常见错误现象:Seconds_Behind_Master 突然跳涨、Slave_IO_Running: No 持续数分钟才恢复;查 SHOW SLAVE STATUS 发现 Last_IO_Error 是 “error connecting to master”,但很快又好了——说明不是主库宕机,而是单次连接失败后卡在默认 60 秒重试上。
- 局域网稳定环境(RTT 10~
15秒较合理 - 跨可用区或云厂商间(RTT 20–80ms):建议
30~60,避免毛刺触发频繁重连 - 若主库偶发大事务(如批量 delete 超过 30 秒无 binlog 输出),需同步调高
slave_net_timeout,否则 IO 线程会因“空闲超时”先断开,再按MASTER_CONNECT_RETRY间隔重试——此时这个参数就变成“断开后等多久再连”,而非“连不上等多久再试”
必须和 slave_net_timeout 配合使用,单独改没用
slave_net_timeout 才是真正触发重连的开关:它定义的是从库与主库之间 TCP 连接的**空闲超时时间**。

