![大师落后几秒](https://linux22.com/image/554486/%E5%A4%A7%E5%B8%88%E8%90%BD%E5%90%8E%E5%87%A0%E7%A7%92.png)
我的一个 MySQL 从服务器在某一时刻报告比主服务器慢 57 秒,而下一时刻则显示 0。我还使用 mk-heartbeat 进行监控,显示平均时间少于 1 秒。MySQL 和系统日期是正确的。MySQL 究竟如何计算从服务器延迟,什么可能导致此报告错误?
需要明确的是,运行show slave status
将报告 57 秒,show slave status
再次运行(1 秒内)将显示 0。这种情况会一直持续,直到从属线程重新启动。通常,服务器至少需要 10 秒才能从一分钟的延迟中恢复。
答案1
这不是报告错误,这只是 MySQL 复制的工作方式。它传输查询日志,然后运行查询。如果其中一个查询需要很长时间才能运行,那么所有其他查询都会阻塞,直到该查询完成。这就是您看到峰值的原因。mk-heartbeat 显示较低的平均值这一事实只是意味着这不是一般的过载问题,只是一些大查询(或者,不太可能,从属服务器上偶尔出现巨大的负载峰值)。
瞬时“落后主服务器的秒数”是一个相当无用的数字(除非您想知道现在落后多少)。mk-heartbeat 统计数据更能让您了解您的复制过载程度 - 如果在十几次 ping 中平均超过 2-3 秒,您就会崩溃。