是否有办法查看何时将最后一个数据字节从主机复制到从机?目前,要检查数据的“当前”状态,我正在做一些非常粗略的操作,例如:
select max(last_updated) from one-my-my-tables
但是效果不是很好。有更正式的方法吗?
答案 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中。
您在主服务器上执行该脚本,它每秒将一次时间戳记插入表中,就像心跳一样。
然后在从站上可以查询时间戳并将其与系统时间进行比较。