slave_net_timeout系统变量指定在slave认为连接断开、中止读取并尝试重新连接之前,slave等待来自master的更多数据或心跳信号的秒数。默认值为60秒(一分钟)。在MySQL5.7.7之前,默认值是3600秒(一小时)。
简单来说就是slave在slave_net_timeout时间之内没有收到master的任何数据(包括binlog,heartbeat),slave认为连接断开,会进行重连。第一次超时后立刻重连,后续重连由下面几个参数影响。
后续重连的时间间隔由 CHANGE MASTER TO 命令的MASTER_CONNECT_RETRY 参数指定。该默认值等待60秒(MASTER_CONNECT_RETRY=60)
重新连接尝试的次数由 CHANGE MASTER TO 命令的MASTER_RETRY_COUNT选项限制。该默认值次数是60天(MASTER_RETRY_COUNT=86400)
心跳间隔由CHANGE MASTER TO语句的MASTER_HEARTBEAT_PERIOD选项控制,如果连接仍然良好,则停止在缺少数据时发生的连接超时。该参数默认值是slave_net_timeout的一半。如果更改了连接超时,则必须发出CHANGE MASTER TO命令将心跳间隔调整为适当的值,以便在连接超时之前发生。
所以在主从复制,由于网络故障或者其他原因导致主库与从库的连接断开或者主库长时间没有向从库发送binlog,从库延迟时候查看下这几个参数是否设置过大,没有及时更新过来。