MySQL複製slave服務器死鎖案例

原文: MySQL複製slave服務器死鎖案例

MySQL複製剛剛觸發了一個bug,該bug的觸發條件是slave上Xtrabackup備份的時候執行flushs tables with read lock和show slave status有可能和SQL Thread造成死鎖。php

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

 

15:24分開始收到報警,這臺slave上發生阻塞,併發線程升高,下面描述下死鎖和阻塞是如何造成的mysql

一、slave上sql thread執行SQL,還未提交sql

這是當時抓取到的事務信息,63就是sql thread,活動的事務運行了479S,能夠計算出這個事務開始的時間約在2018-06-08 15:15:42服務器

 

 二、Xtrabackup進程執行flush tables with read lock併發

 

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

 

四、Xtrabackup進程執行show slave status被block (holding LOCK_active_mi and mi->data_lock, waiting for rli->data_lock),造成死鎖.net

 

五、其餘大部分事務都在等待Waiting for global read lock,造成阻塞,併發線程數升高線程

六、kill掉sql thread後,阻塞消失3d

 

 

相關文章
相關標籤/搜索