首页 > MySQL > MySQL同步参数Seconds_Behind_Master=0 并不能确定主从是否延时

MySQL同步参数Seconds_Behind_Master=0 并不能确定主从是否延时

最近上了几台从库之后经常出现疑似主从同步延时问题,但经过运维排查后给出结论是主从同步正常,不存在比较严重的延时问题,依据是反复实验参数Seconds_Behind_Master=0,但问题真的真的是存在。

事实上问题已经很明确,可能存在的问题就那么几点,主从延时可能性确实很大,后来查了一下资料才恍然,原来 Seconds_Behind_Master参数并不能说明主从同步是否延时问题

官方解释是:

  • When the slave is actively processing updates, this field shows the difference between the current timestamp on the slave and the original timestamp logged on the master for the most event currently being processed on the slave.
准确说Seconds_Behind_Master指的是slave 系统当前时间和当前SQL thread处理的binlog event时间差,这个时间差与binlog event 和 slave 系统时间直接关联。如果master 和 slave时间不同步,就有可能产生 Seconds_Behind_Master 参数显示问题,可以在从库执行 date -s“+1 hour”  看看Seconds_Behind_Master是不是突然变的很大了?
  • When no event is currently being processed on the slave, this value is 0.
当前没有待处理binlog event时,Seconds_Behind_Master也为0
这样问题就已经很明朗了,因为I/O thread并不能保证和master保持实时同步,所以Seconds_Behind_Master=0也不同说明同步没有延时。
另外从 MySQL 5.6.9版本之后,如果SQL thread停止工作或者SQL thread处理完所有 relay log,而I/O thread停止工作的情况下也会会出现  Seconds_Behind_Master=NULL
参考资料:
http://dev.mysql.com/doc/refman/5.6/en/show-slave-status.html
  1. 本文目前尚无任何评论.

=3加7(必填)请输入两数相加的结果。