MySQL 从服务器报告 Seconds_Behind_Master 的错误值

MySQL 从服务器报告 Seconds_Behind_Master 的错误值

我有一个 MySQL 从服务器,当它比主服务器慢 0 秒时,它会正确报告 0 Seconds_Behind_Master。但是,如果它甚至慢 1 秒,它就会报告 14401 Seconds_Behind_Master(即慢 4 小时 1 秒)。

unixdate命令在主服务器和从服务器上产生相同的时间,并且两台机器都同步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 图表看起来很奇怪,并且阻止我在该机器上进行合理的监控以监控从属延迟。有人知道为什么从属会认为它比实际延迟了 4 个小时吗?

答案1

主服务器和从服务器之间的时差是在 I/O 线程启动时计算的,并且假定在运行时永远不会改变。如果其中一台服务器上的时区不同,并且它在没有重新启动 MySQL 的情况下发生了更改,那么从服务器就会将错误的时差添加到报告中。重新启动服务器。

答案2

Seconds_Behind_Master 被认为是衡量从属延迟的不可靠指标。建议使用 mk-heartbeat。请查看SF 帖子(由我本人撰写)。

答案3

可能有更好的答案,但根据我的经验,任何滞后时间 > 0 都只是粗略估计,应谨慎对待。我的滞后时间为 11 到 15 年。此外,据我所知,从属滞后与时区信息无关;它是二进制日志中光标位置的函数。

相关内容