mysql复制表的时候会死锁吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql复制表的时候会死锁吗相关的知识,希望对你有一定的参考价值。
参考技术A
mysql复制表的时候会死锁。用mysql在同一个mysql server中复制数据库有时会出现死锁,即show processlist会看到mysql命令的connection在执行第一个drop function的sql,但状态是waiting for table lock,mysqldump命令卡在sleep状态,没执行什么操作,查看information-scheme.INNODB-LOCKS又是空的。先mysqldump到文件,再用mysql命令执行文件就不会出现这样的死锁。
MySQL复制slave服务器死锁案例
原文: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复制表的时候会死锁吗的主要内容,如果未能解决你的问题,请参考以下文章