1. 程式人生 > >MySQL複製slave伺服器死鎖案例

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後,阻塞消失