SHOW PROCESSLIST方式

为保证二进制日志在从库的执行时间和顺序的正确性,二进制日志中的每个语句都设置了时间戳,因此如果主库上的语句正不断执行,那么可以根据最后一条执行语句时间戳和当前备库时间进行对比,可以估算出出复制延迟的时间。

使用SHOW PROCESSLIST可以看出从库上最后一次执行语句的时间戳距离当前时间:

如果主库上正不断执行SQL,那么SHOW PROCESSLIST看到的TIME可以当作复制的延迟。

如果主库已经一段时间没有执行SQL,那么SHOW PROCESSLIST看到的TIME只能当作从库上最近一次执行SQL时间点到当前时间点的间隔。

SHOW SLAVE STATUS方式

执行SHOW SLAVE STATUS查看复制信息,使用Seconds_Behind_Master来查看从库落后主库的秒数。

复制延迟时间=从库执行SQL的时间点-主库执行SQL的时间点。

如果Slave_SQL_Running_State 显示Slave has read all relay log; waiting for more updates,表示从库上IO线程空闲。

对比Master_Log_File+Read_Master_Log_Pos与Relay_Master_Log_File+Exec_Master_Log_Pos,如果相同则代表所有发送到备库的命令都已应用到备库上,如果两者相差不大,则代表备库有一定延迟。

监控失效问题:

1、MySQL复制采用主库推送方式,如果主库的dump进程发生异常或主从网络传输发生异常,导致从库未收到主库推送来的信息,主从已出现严重延迟,但Seconds_Behind_Master仍显示为0

2、如果从库IO线程启动后,主库系统时间发生变化,会导致主从延迟不准。

3、如果主库上存在超大事务或DDL操作,只有在主库上提交事务才会发送到从库,而在此之前不会报主从延迟。

4、对于多进程复制,无法使用某个线程的执行情况来反应整个复制的运行情况,因此Seconds_Behind_Master会存在偏差。

为解决问题1,MySQL引入下面参数:

slave-net-timeout:在没有得到更多数据之后slave等待的时间,默认值3600s
master-connect-retry:每次和主库建立链接重试的等待时间,默认值为60s
master-retry-count:从库同主库建立链接的重试次数,默认86400次
master_heartbeat_period:当主库没有新二进制日志产生时通知从库的间隔时间,默认值为slave-net-timeout参数的一半。 PS:master_heartbeat_period值可以在CHANGE MASTER时显式指定,在系统表中mysql.slave_master_info中查看。当master_heartbeat_period值为0时,表示禁用该功能。

要解决主从时间差异问题,可以配置相同的时间源并定期进行时间同步(ntpdate)

对于超大事务,建议对其进行事务拆分,对于超大表DDL,可以采用pt_osc或ghost方式进行Online DDL。

pt-heartbeat工具

由于使用Seconds_Behind_Master无法准确预估出复制延迟情况,因此Percona公司推出pt-heartbeat工具来监控复制延迟。

pt-heartbeat工具实现原理:

1、在主库上创建一张同步表,并定期更新该表数据(时间戳)

2、监控从库上该同步表数据,对比从库上的时间从而计算出复制延迟。

优点:复制延迟时间计算准确

缺点:非MySQL原生自带,需要额外部署,并会少量消耗服务器资源

MySQL 5.7--复制延迟监控的更多相关文章

  1. MySQL至TiDB复制延迟监控

    因生产环境mysql中有较多复杂sql且运行效率低,因此采用tidb作为生产环境的从库进行部分慢sql及报表的读写分离.其中MySQL至TIDB采用Syncer工具同步.关于TIDB的安装及Synce ...

  2. mysql复制延迟监控脚本

    #!/bin/sh #ocpyang@126.com #repdelay.sh #查看复制延迟详细多少event #####1.juede the rep slave status export bl ...

  3. MySQL之 从复制延迟问题排查

    一.从库复制延迟问题 1.可能的原因如下(1)主从服务器处于不同的网络之中,由于网络延迟导致:(2)主从服务器的硬件配置不同,从服务器的硬件配置(包括内存,CPU,网卡等)远低于主服务器:(3)主库上 ...

  4. MySQL复制中slave延迟监控

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

  5. mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理

    转自:http://www.cnblogs.com/kevingrace/p/6261091.html 在mysql工作中接触最多的就是mysql replication mysql在复制方面还是会有 ...

  6. MySQL 5.7并发复制和mysqldump相互阻塞引起的复制延迟

    本来MySQL BINLOG和mysqldump命令属于八竿子打不着的两个事物,但在最近故障排查中,发现主库和从库已经存在很严重的复制延迟,但从库上显示slave_behind_master值为0,复 ...

  7. [MySQL] 号称永久解决了复制延迟问题的并行复制,MySQL5.7

    一.缘由: 某天看到主从复制延时的告警有点频繁,就想着是不是彻底可以解决一下. 一般主从复制,有三个线程参与,都是单线程:Binlog Dump(主) ----->IO Thread (从) - ...

  8. MySQL 主从同步延迟监控

    MySQL5.7和8.0支持通过 replication_applier_status 表获同步延迟时间,当从库出现延迟后,该表中的字段 REMAINING_DELAY 记录延迟秒数,当没有延迟时,该 ...

  9. MySQL半同步复制

    从MySQL5.5开始,MySQL以插件的形式支持半同步复制.如何理解半同步呢?首先我们来看看异步,全同步的概念 异步复制(Asynchronous replication) MySQL默认的复制即是 ...

随机推荐

  1. Java:程序开机自启动

    一.加到开机自动启动程序的注册表: package com.zit; import java.io.IOException; public class Start { public static vo ...

  2. 每天CSS学习之line-height

    line-height是CSS的一个属性,其作用是设置行高.其有以下几种值: 1.normal:自动设置合理的行间距.该值是默认值.如下示例: p{ line-height:normal; } 结果: ...

  3. 深入理解java虚拟机---java虚拟机的发展史(四)

    1.java虚拟机 A:java虚拟机有很多个版本,但是我们经常使用的是sun公司的HotSpot,可以通过以下命令获取java虚拟机版本 B:JAVA虚拟机分类: 1.Sun Class VM 2. ...

  4. spring4全注解web项目demo

    记得没接触框架的时候,写demo测试时真的很爽,新建web项目,然后随便写写servlet随便调试 框架越来越多,配置记不得了,整合容易出问题,集成新东西越来越少了,不敢动了. 这是个spring4的 ...

  5. 201621123001 《Java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. Mysql数据库简单操作,常用的操作命令 启动:进入Mysql (从命令行mysql -u root -p) 退 ...

  6. shell脚本实例-mysql多机部署

    今天我给大家分享shell 安装mysql 多机部署的实例,本次实验是基于各个主机的公钥已经配置好了,如果还不会推送公钥的同学,可以看看我以前写的文章,那里面有写推公钥的实例,mysql 多机部署一般 ...

  7. mail工具的安装、配置及问题处理

    使用mail发邮件时,应先将相关邮件服务启动,本文主要介绍sendmail邮件工具的配置方法和问题处理. 1.安装 ubuntu中sendmail函数可以很方便的发送邮件,ubuntu sendmai ...

  8. C# Sublime text3 环境配置(二)

    下载地址:http://www.sublimetext.com/3 1.安装完之后,tools菜单下最下一个点一下,安装Package Control 插件2.Preferences菜单下,点Pack ...

  9. python day05 作业答案

    1. b.不可以 c.tu=("alex",[11,22,{"k1":"v1","k2":["age" ...

  10. POJ 2369 Permutations(置换群概念题)

    Description We remind that the permutation of some final set is a one-to-one mapping of the set onto ...