MySQL 5.7并发复制和mysqldump相互阻塞引起的复制延迟-Linux运维日志

有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895

本来MySQL BINLOG和SHOW PROCESSLIST命令属于八竿子打不着的两个事务,但在最近故障排查中,发现主库和从库已经存在很严重的复制延迟,但从库上显示slave_behind_master值为0,复制SQL线程与备份线程之间相互阻塞,但未报死锁

在从库上执行SHOW PROCESSLIST发现复制的SQL线程等待锁,而等待SQL的WHERE条件竟然是类似于WHERE C1=’ABC’ AND C2>’2018-03-01′ AND C2<‘2018-03-26’ 这种个范围查询,第一时间想到就是怎么是个基于STATEMENT的复制,不科学啊,我们生产环境统一使用基于ROW格式的复制,难道研发私自修改回话级别的复制格式?

使用MySQL Binlog导出日志一看:

MySQL 5.7并发复制和mysqldump相互阻塞引起的复制延迟-Linux运维日志

发现真错怪研发同事啦,rbr_only=yes说明基于ROW格式进行复制,“SET TRANSACTION ISOLATION LEVEL READ COMMITTED”也是基于行格式复制的典型特征之一,last_committed和sequence_number用于MySQL 5.7版本中的并发复制,row_query后跟的是在主库上执行的原始SQL,也就是我们在从库SHOW PROCESSLIST中看到的SQL,但实际上从库执行的还是BINLOG部分,该BINLOG可以直接可以直接直接在从库上执行,也可以解析成一行行的数据DML操作,BINLOG部分如下:

MySQL 5.7并发复制和mysqldump相互阻塞引起的复制延迟-Linux运维日志

==========================================================================================================

另外一个很有意思的问题,如果在从库上运行mysqldump进行备份,且从库上使用并行复制,会导致备份和复制相互阻塞:

MySQL 5.7并发复制和mysqldump相互阻塞引起的复制延迟-Linux运维日志

在上面的阻塞中,多个SQL线程与备份线程相互之间阻塞,且MySQL无法有效检测出死锁环路而触发死锁的回滚机制,导致复制线程和备份作业相互hang住,需要DBA进行干预(取消备份或停止复制),在复制SQL线程被hang住期间,复制的IO线程仍可以正常工作接受到主库的Binlog信息,但slave_behind_master并不会随之增大,如果仅通过监控slave_behind_master值来判断主从复制延迟,则会导致延迟监控存在严重漏洞,因此在监控复制延迟时,除监控slave_behind_master值外,还需要监控主库binlog位置点和从库执行的binlog位置点。

如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群

主题测试文章,只做测试使用。发布者:云大使,转转请注明出处:https://www.xp8.net/data/641.html

(0)
打赏 微信扫一扫 微信扫一扫
云大使的头像云大使
上一篇 2018年9月30日 下午2:01
下一篇 2018年9月30日 下午7:29

相关推荐

  • Mac下MySQL环境搭建的步骤详解-mysql教程-学派吧

    本篇文章给大家带来的内容是关于Mac下MySQL环境搭建的步骤详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 Mac 下安装 MySQL 还是很方便的, 总结来看有2个方法。 方法一:用dmg镜像安装 1、安装 官网下载好 MySQL Mac 版安装包,常规步骤安装,安装过程中会出现如下提示: 2019-03-24T18:27:31.0…

    数据库运维 2019年4月9日
    2.9K00
  • MySQL Workbench如何导出查询结果?(图文)-mysql教程-学派吧

    你可以使用MySQL Workbench运行一个查询,然后将该查询的结果导出到一个文件中。(相关推荐:《MySQL教程》) 步骤: 1、运行查询 2、单击“Results Grid”菜单栏上的“Export” 如下截图: 注意:MySQL Workbench默认将结果集限制为1000行。如果不希望你的结果集被限制在这个数量(或者已经指定的其他数量),请确保删…

    2019年4月9日
    3.3K00
  • SQL Server 2005安装教程

    [v_tips]有很多朋友需要安装sqlserver、但是不知道怎么安装、下面我们搜集一片测试正常的教程、发布出来,供站长朋友学习使用[/v_tips]下面开始:解压下载的文件,在路径SQL Server 2005\SQL Server x86\Tools下双击setup.exe,单击“下一步”单击“下一步”,单击“下一步”,单击“下一步” 填写好相关信息后…

    2018年8月19日
    12.0K00
  • Redis的事务操作的命令与执行操作教程-mysql教程-学派吧

    本篇文章给大家带来的内容是关于Redis的事务操作的命令与执行操作(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 序1 本文主要研究一下redis的事务操作 命令 multi与exec 命令行 127.0.0.1:6379> multi OK 127.0.0.1:6379> incr total QUEUED 127.0…

    数据库运维 2018年11月24日
    2.9K00
  • MySQL中EXPLAIN解释命令的介绍(附示例)-mysql教程-学派吧

    本篇文章给大家带来的内容是关于MySQL中EXPLAIN解释命令的介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1 EXPLAIN概念 EXPLAIN会向我们提供一些MySQL是执行sql的信息: EXPLAIN可以解释说明 SELECT, DELETE, INSERT, REPLACE, and UPDATE 等语句. 当…

    数据库运维 2019年4月9日
    2.0K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

工作时间:周一至周五,9:30-18:30,节假日休息

添加微信
添加微信
分享本页
返回顶部
---------官方优惠叠加渠道折扣:通过我们购买腾讯云/阿里云,价格更低,服务更优。更有专业配置指导与服务。微信同步:18838889666----