MySQL 最新 Bug,从库设置super_read_only=ON时,多线程复制死锁

MySQL 最新 Bug,从库设置super_read_only=ON时,多线程复制死锁

多线程复制是MySQL 5.7提供的重要功能,对解决MySQL主从复制延迟有巨大帮助。一次偶然的机会,发现开启多线程复制,且主库有较高的写流量时,此时调整从库的super_read_only=ON,有一定概率导致从库多线程复制死锁。

操作系统:

CentOS 7.6

测试版本:

Community MySQL Server 8.0.16

Percona MySQL Server 5.7.26

配置:

slave_parallel_type=LOGICAL_CLOCK

slave_parallel_workers=16

slave_preserve_commit_order=ON

两张截图,看看复制死锁时的show processlist; 和 show slave status\G

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IggGCPEp-1591958558057)(https://pics3.baidu.com/feed/8326cffc1e178a82c9f8c122fe098c89a877e87f.jpeg?token=4eb2a1dbc33c505c8bf007f74040e65f&s=6B29E34A5BE4937C4AC16C0F000070C6)]show slave status\G在这里插入图片描述

从图中可以看到复制线程全部阻塞,状态显示 Waiting for dependent transaction to commit,Waiting for global read lock,设置super_read_only=ON的连接也阻塞。如果没有人为介入处理,死锁会一直持续下去,从库的复制延迟 Seconds_Behind_Master 会一直增大。当手动kill super_read_only=ON的连接,多线程复制恢复。

复现步骤:

_only=ON的连接,多线程复制恢复。

复现步骤:

搭建MySQL 1主1从,开启多线程复制。在主库使用sysbench写数据。在从库上不断执行set global super_read_only=OFF;set global super_read_only=ON;运行几分钟,从库复制死锁,复制延迟不断增大,第3步设置super_read_only的连接卡住。强杀第3步的连接,从库复制恢复

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值