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

在从库上执行SHOW PROCESSLIST发现复制的SQL线程等待锁,而等待SQL的WHERE条件竟然是类似于WHERE C1=‘ABC‘ AND C2>‘2018-03-01‘ AND C2

使用MySQL Binlog导出日志一看:

发现真错怪研发同事啦,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部分如下:

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

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

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

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

打完收工,妹子镇贴:

mysql两个修改事务相互阻塞_MySQL 5.7并发复制和mysqldump相互阻塞引起的复制延迟...相关推荐

  1. mysql 不同连接的事务 会嵌套_MySQL——事务

    事务(Transaction)是数据库区别于文件系统的重要特性之一,事务会把数据库从一种一致状态转换为另一种一致状态. 关键词 事务四大特性ACID MySql事务隔离级别 MVCC多版本并发控制 实 ...

  2. 6、MySQL查看和修改事务隔离级别

    本节主要介绍查看和修改事务隔离级别的几种方法. 查看事务隔离级别 在 MySQL 中,可以通过show variables like '%tx_isolation%'或select @@tx_isol ...

  3. mysql字符集修改无效,Mysql字符集的修改及查看问题_MySQL

    bitsCN.com Mysql字符集的修改及查看问题 修改及查看mysql数据库的字符集 修改my.cnf vi /etc/my.cnf 在[client]下添加 default-character ...

  4. mysql 两个数据库指定表同步_mysql从2个数据库中同步两个表

    我无法相信你没有找到合适的脚本来做到这一点.根据服务器到服务器的带宽和连接以及表数据大小,您可以: >直接转移整个表: mysqldump [options] sourcedatabase ta ...

  5. mysql大表修改表名原理_MySQL修改大表工具pt-online-schema-change原理

    MySQL修改大表工具pt-online-schema-change的使用限制: 1).如果修改表有外键,除非使用 –alter-foreign-keys-method 指定特定的值,否则工具不予执行 ...

  6. mysql两种引擎的适用场景_MySQL两种引擎的区别和应用场景

    Innodb引擎 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别.该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL ...

  7. mysql用命令修改主键名_MySQL的常用命令:添加外键,修改字段名称,增加字段 设置主键自增长等...

    Mysql命令添加外键 前提是有这么几个表   以mall_product 和 mall_category为例 ALTER TABLE mall_product ADD CONSTRAINT fore ...

  8. mysql用命令修改主键名_MySQL的常用命令:添加外键,修改字段名称,增加字段 设置主键自增长等 落楝花...

    Mysql命令添加外键 前提是有这么几个表   以mall_product 和 mall_category为例 ALTER TABLE mall_product ADD CONSTRAINT fore ...

  9. mysql innodb事务中 出现_MySql InnoDB事务死锁问题

    这篇博客的文章内容发生于某天晚上服务端日志报了一大堆 Deadlock found when trying to get lock; try restarting transaction,当时通过字面 ...

  10. mysql事务使用转化_Mysql事务

    1事务简介 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操 ...

最新文章

  1. AngularJS实现产品列表(页面搜索,排序)
  2. 如何用计算机画立方体,画立方体-计算机图形学实验.doc
  3. RESTful API 中的 Status code 是否要遵守规范
  4. java翻译smali,请各位好人帮我翻译Java成smali(没有false)
  5. 快速重置vuex数据 - Vue
  6. 神经网络人口预测matlab,BP神经网络预测(人口)程序(matlab)
  7. ios学习笔记——RunTime
  8. .NET利用委托实现动态查询
  9. 对列 、生产者与消费者
  10. sql java驱动程序_microsoft sql server jdbc驱动下载
  11. 修改服务器域名解析,总结修改Godaddy解析服务器(DNS)三步骤
  12. php 母版 登陆,幻灯片母版的作用有哪些
  13. 移动端H5页面在ios设备上软键盘顶起页面后隐藏,页面不回弹的解决方案
  14. matlab增强图像饱和度,matlab增强图像饱和度
  15. 【一周头条盘点】中国软件网(2017.1.2~2017.1.5)
  16. GBASE 8C——SQL参考6 sql语法(12)
  17. 攻城狮应该明白的浏览器工作原理~
  18. mysql数据库 菜鸟_MySQL数据库菜鸟教程(一)
  19. 【实用工具】Chrome浏览器英文翻译插件推荐:Google翻译
  20. 二手房数据的分析与挖掘(七)-- 预测房价

热门文章

  1. Spring-外部配置的值是如何通过@Value注解获取的?
  2. Java 注解Annotation总结一
  3. 如果Service有多个实现类,Spring怎么知道该注入哪个实现类
  4. 有关Kali处理源的方法
  5. 阿里云环境迁移记录 - RabbitMQ集群搭建
  6. jenkins构建执行shell 所有命令出现command not found
  7. redis重做从库时报Connection with master lost错误
  8. 029——VUE中键盘语义修饰符
  9. TCP/IP-链路层
  10. C# Winform 自动更新程序实例