码迷,mamicode.com
首页 > 数据库 > 详细

MySQL复制slave服务器死锁案例

时间:2018-10-21 16:53:11      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:show   flush   mysq   wan   线程   href   案例   ima   描述   

原文:MySQL复制slave服务器死锁案例

MySQL复制刚刚触发了一个bug,该bug的触发条件是slave上Xtrabackup备份的时候执行flushs tables with read lock和show slave status有可能和SQL Thread形成死锁。

该bug在MySQL5.6.23上已修复, https://bugs.mysql.com/bug.php?id=70307

 

15:24分开始收到报警,这台slave上发生阻塞,并发线程升高,下面描述下死锁和阻塞是如何形成的

1、slave上sql thread执行SQL,还未提交

这是当时抓取到的事务信息,63就是sql thread,活动的事务运行了479S,可以计算出这个事务开始的时间约在2018-06-08 15:15:42

 技术分享图片

 2、Xtrabackup进程执行flush tables with read lock

 技术分享图片

3、sql thread执行commit,被blocked,Waiting for commit lock (holding rli->data_lock, waiting for MDL_COMMIT)

 

4、Xtrabackup进程执行show slave status被block (holding LOCK_active_mi and mi->data_lock, waiting for rli->data_lock),形成死锁

 技术分享图片

5、其他大部分事务都在等待Waiting for global read lock,形成阻塞,并发线程数升高

6、kill掉sql thread后,阻塞消失

 技术分享图片

 

技术分享图片

MySQL复制slave服务器死锁案例

标签:show   flush   mysq   wan   线程   href   案例   ima   描述   

原文地址:https://www.cnblogs.com/lonelyxmas/p/9825430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!