mysql复制延迟监控_【老叶茶馆】MySQL复制中slave延迟监控

在MySQL复制环境中,我们通常只根据 Seconds_Behind_Master 的值来判断SLAVE的延迟。这么做大部分情况下尚可接受,但并不够准确,而应该考虑更多因素。

首先,我们先看下SLAVE的状态:

yejr@imysql.com [(none)]>show slave status\G

***************************1.row ***************************Slave_IO_State:Waitingformaster to send event***Master_Log_File:mysql-bin.000327Read_Master_Log_Pos:668711237Relay_Log_File:mysql-relay-bin.002999Relay_Log_Pos:214736858Relay_Master_Log_File:mysql-bin.000327Slave_IO_Running:YesSlave_SQL_Running:Yes***Skip_Counter:0Exec_Master_Log_Pos:654409041Relay_Log_Space:229039311***Seconds_Behind_Master:3296***

可以看到 Seconds_Behind_Master 的值是 3296,也就是SLAVE至少延迟了 3296 秒。

我们再来看下SLAVE上的2个REPLICATION进程状态:

yejr@imysql.com [(none)]>show full processlist\G

***************************1.row ***************************Id:6User:system user

Host:db:NULL

Command:ConnectTime:22005006State:Waitingformaster to send eventInfo:NULL

***************************2.row ***************************Id:7User:system user

Host:db:NULL

Command:ConnectTime:3293State:UpdatingInfo:UPDATE **SET **WHERE **

可以看到SQL线程一直在执行UPDATE操作,注意到 Time 的值是 3293,看起来像是这个UPDATE操作执行了3293秒,一个普通的SQL而已,肯定不至于需要这么久。

实际上,在REPLICATION进程中,Time 这列的值可能有几种情况:

1、SQL线程当前执行的binlog(实际上是relay log)中的timestamp和IO线程最新的timestamp的差值,这就是通常大家认为的 Seconds_Behind_Master 值,并不是某个SQL的实际执行耗时;

2、SQL线程当前如果没有活跃SQL在执行的话,Time值就是SQL线程的idle time;

而IO线程的Time值则是该线程自从启动以来的总时长(多少秒),如果系统时间在IO线程启动后发生修改的话,可能会导致该Time值异常,比如变成负数,或者非常大。

来看下面几个状态:

#设置pager,只查看关注的几个status值yejr@imysql.com [(none)]>pager cat |egrep -i 'system user|Exec_Master_Log_Pos|Seconds_Behind_Master|Read_Master_Log_Pos'#这是没有活跃SQL的情况,Time值是idle time,并且 Seconds_Behind_Master 为 0yejr@imysql.com [(none)]>show processlist;show slave status\G

|6|system user ||NULL |Connect|22004245|Waitingformaster to send event|NULL ||7|system user ||NULL |Connect|13|Hasread all relay log;**Read_Master_Log_Pos:445167889Exec_Master_Log_Pos:445167889Seconds_Behind_Master:0#和上面一样yejr@imysql.com [(none)]>show processlist;show slave status\G

|6|system user ||NULL |Connect|22004248|Waitingformaster to send event|NULL ||7|system user ||NULL |Connect|16|Hasread all relay log;**Read_Master_Log_Pos:445167889Exec_Master_Log_Pos:445167889Seconds_Behind_Master:0#这时有活跃SQL了,Time值是和 Seconds_Behind_Master 一样,即SQL线程比IO线程“慢”了1秒yejr@imysql.com [(none)]>show processlist;show slave status\G

|6|system user ||NULL |Connect|22004252|Waitingformaster to send event|NULL ||7|system user ||floweradmin |Connect|1|Updating|update **Read_Master_Log_Pos:445182239

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值