当前位置:Gxlcms > 数据库问题 > MySQL5.6 Waiting for Commit Lock

MySQL5.6 Waiting for Commit Lock

时间:2021-07-01 10:21:17 帮助过:53人阅读

mysql  Bug#19843808 自动修复记录

 

MySQL5.6和Xtrabackup之间存在一个bug,这个bug在5.6.23中已经修复。
Xtrabackup备份的时候执行flushs tables with read lock和show slave status会有可能和SQL Thread形成死锁,导致SQL Thread一直被卡主,STOP也没有用,Kill我们测试会丢失数据,只有Restart Server才行。 原因是SQL Thread的DML操作完成之后,持有rli->data_lock锁,commit的时候等待DML_COMMIT,而flush tables with read lock之后执行的show slave status会等待rli->data_lock;修复方法是rli->data_lock锁周期只在DML操作期间持有。   第一次遇到这个问题,开始还以为是zabbix出现问题,一把叫来了监控,直接说,主业务库中zabbix用户大量执行show slave status 导致数据库卡死。后面就发现监控说话一直抖。好吧,不吓人了,开始解决问题,言归正传:   1  show processlist  找到waiting for commit lock 的线程号,然后直接kill。这个是罪魁祸首,虽然他也是无辜的。 2. 执行上面一步后,其实sql线程已经挂了,这里需要stop slave 3. start slave 4.结束   后面我会把这个过程写成自动化修复脚本,后面再分享,不过在分享后,上面的废话就会删除。哈哈哈哈。暂时就自己看看,做做记录,不公开了。

MySQL5.6 Waiting for Commit Lock

标签:png   大量   box   backup   rest   http   ble   status   执行   

人气教程排行