我的一个MySQL从服务器会在某一时刻向master报告57秒,下一个会显示0.我也用mk-heartbeat进行监控,显示平均不到1秒。 MySQL和系统date是正确的。 MySQL究竟如何计算从站延迟,以及可能导致这种报告错误的原因?
要清楚,运行show slave status将会报告57秒,再次运行show slave status (在1秒内)将显示0.这将持续无限地触发,直到slave线程重新启动。 通常情况下,服务器需要至less10秒才能从一分钟的时间内恢复。
这不是报告错误,这是MySQL复制的工作原理。 它通过查询日志传输,然后运行查询。 如果其中一个查询需要很长时间才能运行,则所有其他查询都会阻塞,直到该查询完成。 这就是为什么你看到尖峰。 mk-heartbeat显示低平均值的事实仅仅意味着它不是一个一般的超载问题,只是几个大的查询(或者更不可能的情况是偶尔的从属怪物负载峰值)。
即时“主人之后”秒是一个相当无用的数字(除非你想知道你现在离你有多远)。 mk-heartbeat统计数据对于了解你的复制是多么的重要,要好得多 – 平均来说,平均超过十几秒钟,平均超过2-3秒,你就会陷入困境。