MySQL从站报告Seconds_Behind_Master的值不正确

我有一个MySQL的奴隶,当它在主人后面0秒,它正确地报告0 Seconds_Behind_Master。 但是,如果它落后了1秒,则会报告14401 Seconds_Behind_Master(落后4小时1秒)。

unix date命令在master和slave上产生相同的时间,两台机器都与ntp同步。

在两台机器上发出一个SELECT NOW()会产生相同的时间。 另外,两个时区都是相同的:

 mysql> show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | CDT | | time_zone | SYSTEM | +------------------+--------+ 2 rows in set (0.00 sec) 

这对我来说不是一个很大的问题,但是它使我的nagios图看起来很奇怪,并且阻止我在那台机器上进行健全的监视来监视slave滞后。 任何人都知道为什么奴隶会认为它比现在落后了4个多小时?

在I / O线程启动时计算主从时间的差异,并假定它在运行时永远不会改变。 它在其中一台服务器上有不同的时区,并且在不重启MySQL的情况下更改,然后从服务器将不正确的差异添加到报告中。 重新启动服务器。

Seconds_Behind_Master被认为是奴隶滞后的不可靠的度量。 mk-heartbeat是build议的解决scheme。 看看这个 SF的post(由你真正的)。

可能有更好的答案,但根据我的经验,任何滞后时间> 0几乎都只是一个疯狂的估计,应该怀疑。 我有11至15年的滞后时间。 另外,afaik,奴隶滞后与时区信息无关; 它是二进制日志中光标位置的函数。