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)
打赏 微信扫一扫 微信扫一扫
apache如何做到日志分割-Linux运维-学派吧
上一篇 2018年9月30日 下午2:01
下一篇 2018年9月30日 下午7:29

相关推荐

  • mysql存储引擎:myIsam和innodb的区别-mysql教程-

    MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种。这里介绍关于这两种引擎的一些基本概念(非深入介绍)。 MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索,但不是事务安全的,而且不支持外键。每张MyISAM表存放在三个文件中:frm 文件存放表格定义;数据文件是MYD (MYData);索引文件是MYI (MYI…

    数据库运维 2019年4月24日
    3.7K00
  • 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日
    3.1K00
  • mysql的20条优化教程-mysql教程-学派吧

    本篇文章给大家带来的内容是关于mysql的优化总结,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 前言 现如今,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。所以,我整理了MySQL优化的几点建议,希望这些优化技巧对您有用,总结不到的,欢迎大家补充。 SQL执行慢的原因 网络速度慢,内存不足,I/O吞吐量小,磁盘空…

    数据库运维 2018年11月24日
    2.7K00
  • 腾讯云云数据库智能参数优化设置

    背景 “深度学习”这个词已经进入了公众的视线。时至今日,相关技术也比较成熟,腾讯云数据库团队也在思考如何借助深度学习的方式来提升数据库的运行效率。首先想到的就是数据库的参数调优。由于业务系统的千差万别,也无法像优化 SQL 一样在细粒度下进行针对性的调优,是令数据库管理者头痛的难题,往往需要借助经验去构筑一套相对较为优异的参数模板。数据库参数调优能力也是专家…

    2025年8月8日
    91200
  • 在MySQL中的explain中的using where和using index-mysql教程-

    本篇文章的主要内容是关于在mysql数据库explain中的using where和using index的使用,感兴趣的朋友可以了解一下。 1. 查看表中的所有索引 show index from modify_passwd_log; 有两个 一个是id的主键索引 , 一个是email_id的普通索引 2. using index表示 使用到了索引 , 并…

    2019年4月24日
    4.3K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

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

添加微信
添加微信
分享本页
返回顶部