查看mysql读取从站的最后修改时间

时间:2019-01-21 21:51:47

标签: mysql

是否有办法查看何时将最后一个数据字节从主机复制到从机?目前,要检查数据的“当前”状态,我正在做一些非常粗略的操作,例如:

select max(last_updated) from one-my-my-tables

但是效果不是很好。有更正式的方法吗?

2 个答案:

答案 0 :(得分:1)

从特权MySQL帐户(例如root)使用:

mysql> show slave status;

字段:

Seconds_Behind_Master: 0

告诉您奴隶过时了。

答案 1 :(得分:1)

不幸的是,不使用该语句就无法从SHOW SLAVE STATUS获取信息。我最近进行了搜索,发现其中有replication info tables in the PERFORMANCE_SCHEMA,但是其中没有一个包含Seconds_Behind_Master

严格来说,Seconds_Behind_Master不会告诉您您的要求。您问“何时将最后一个字节的数据从主机复制到从机?” Seconds_Behind_Master告诉您从属服务器上的系统时间与中继日志中上次执行的事件的时间戳之间的时差。 或者,如果从站已执行所有下载的事件,则报告为0。

但是,假设从服务器失去了与主机的联系,而主机上还有更多日志等待下载?从站不报告此消息,因为它不知道会有更多日志。

更准确的方法是使用pt-heartbeat脚本来测量复制延迟,该脚本包含在免费的Percona Toolkit中。

您在主服务器上执行该脚本,它每秒将一次时间戳记插入表中,就像心跳一样。

然后在从站上可以查询时间戳并将其与系统时间进行比较。

  • 如果从站被追赶,则差将为零。
  • 如果从站已下载了所有日志,但是执行事件滞后,则时间戳差异将显示出来。
  • 如果从服务器与主服务器失去联系并且尚未下载所有日志,但是我们知道心跳时间戳应该每秒更新一次,那么您仍然可以准确地测量复制滞后。