MySQL中slave监控的延迟情况分析

2019-01-05 09:54:45于海丽

好了,最后我们说下如何正确判断SLAVE的延迟情况:
1、首先看 Relay_Master_Log_File 和 Master_Log_File 是否有差异;
2、如果Relay_Master_Log_File 和 Master_Log_File 是一样的话,再来看Exec_Master_Log_Pos 和 Read_Master_Log_Pos 的差异,对比SQL线程比IO线程慢了多少个binlog事件;
3、如果Relay_Master_Log_File 和 Master_Log_File 不一样,那说明延迟可能较大,需要从MASTER上取得binlog status,判断当前的binlog和MASTER上的差距;

因此,相对更加严谨的做法是:
在第三方监控节点上,对MASTER和SLAVE同时发起SHOW BINARY LOGS和SHOW SLAVE STATUSG的请求,最后判断二者binlog的差异,以及 Exec_Master_Log_Pos 和 Read_Master_Log_Pos 的差异。

例如:
在MASTER上执行SHOW BINARY LOGS 的结果是:

+------------------+--------------+ | Log_name | File_size | +------------------+--------------+ | mysql-bin.000009 | 1073742063 | | mysql-bin.000010 | 107374193 | +------------------+--------------+

而在SLAVE上执行SHOW SLAVE STATUSG 的结果是:

Master_Log_File: mysql-bin.000009 Read_Master_Log_Pos: 668711237 Relay_Master_Log_File: mysql-bin.000009 Slave_IO_Running: Yes Slave_SQL_Running: Yes *** Exec_Master_Log_Pos: 654409041 *** Seconds_Behind_Master: 3296 ***

这时候,SLAVE实际的延迟应该是:
mysql-bin.000009 这个binlog中的binlog position 1073742063 和 SLAVE上读取到的binlog position之间的差异延迟,即:

1073742063 - 654409041 = 419333022 个binlog event

并且还要加上 mysql-bin.000010这个binlog已经产生的107374193个binlog event,共

107374193 + 419333022 = 526707215 个binlog event

您可能感兴趣的文章:

MYSQL5 masterslave数据同步配置方法mysql 数据同步 出现Slave_IO_Running:No问题的解决方法小结解读mysql主从配置及其原理分析(Master-Slave)MYSQL同步 Slave_IO_Running: No 或者Slave_SQL_Running: No的解决方法[已测]mysql5.5 master-slave(Replication)主从配置mysql5.5 master-slave(Replication)配置方法基于MySQL Master Slave同步配置的操作详解Mysql主从复制(master-slave)实际操作案例解决MySQL中的Slave延迟问题的基本教程mysql(master/slave)主从复制原理及配置图文详解mysql同步问题之Slave延迟很大优化方法