溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL案例--磁盤空間不足&MTS Group recovery失敗

發(fā)布時間:2020-08-11 18:51:04 來源:ITPUB博客 閱讀:162 作者:wangwenan6 欄目:MySQL數(shù)據(jù)庫

-------------------------------------------------------------------------------------------------正文---------------------------------------------------------------------------------------------------------------
線上業(yè)務(wù),最后一次內(nèi)測階段;
背景:MySQL-5.7.12
問題發(fā)生的現(xiàn)象:
收到報警信息,業(yè)務(wù)主庫A的心跳檢測失敗,將備庫B升級為業(yè)務(wù)主庫;
問題發(fā)生的原因:
業(yè)務(wù)主庫A的數(shù)據(jù)文件目錄的磁盤空間剩余量為0%;
問題解決的過程:
磁盤空間寫滿以后,DML語句無法將數(shù)據(jù)變更落盤,因此導(dǎo)致業(yè)務(wù)主庫不可用;
所以處理方式也很簡單,清理一部分空間以后,purge掉了一些已經(jīng)備份過的binlog
不過在處理中發(fā)現(xiàn)一個問題,replication slave在報錯;
查看mysql的error-log,可以看到如下信息:
MySQL案例--磁盤空間不足&MTS Group recovery失敗

MySQL案例--磁盤空間不足&MTS Group recovery失敗

與此同時,不管是start slave還是change master都無法完成,會在error-log中不斷的刷新類似的錯誤信息;

由于業(yè)務(wù)主庫A降級是在磁盤空間寫滿以后,所以可以確認備庫B上的業(yè)務(wù)操作不可能會在A上面執(zhí)行,兩個庫之間不會有一致性的問題;
于是選擇了reset slave all+change master的方式,重新恢復(fù)了同步;

故障報告寫完以后,再詳細研究一下這種現(xiàn)象的原因:
找到一個bug記錄:發(fā)生于MySQL-5.6
http://bugs.mysql.com/bug.php?id=77496
并且在5.7.12中也發(fā)現(xiàn)過:
https://bugs.mysql.com/bug.php?id=80102

在comment中,提到了relay_log_recovery=ON和
slave-parallel-type=LOGICAL_CLOCK時會出現(xiàn)這個問題;
恰好正在出問題的庫也是這種設(shè)置;

發(fā)生錯誤的原因:
基于在5.6的Group Commit特性,5.7中實現(xiàn)了Mutil-Thread-Slave的特性,多個線程會同時復(fù)現(xiàn)relay-log中, 同一組的事務(wù);
因此
multi-threaded replication slave在運行過程中,如果意外的停止了,由于無法確認事務(wù)的一致性,在開啟了relay_log_recovery的情況下,會出現(xiàn)如截圖中的信息;

官方推薦的恢復(fù)步驟:
1.
設(shè)置
relay_log_recovery=0;
2.啟動slave的時候,帶上特殊命令:
START SLAVE UNTIL SQL_AFTER_MTS_GAPS;
3.設(shè)置relay_log_recovery=1;
非常重要的一點:relay_log_recovery不是一個動態(tài)的參數(shù),需要重啟數(shù)據(jù)庫實例;


這個問題在5.7.13得到了修復(fù),整個操作步驟會在重啟的時候自動進行;重啟的時候...重啟的...重啟...

雖然和bug文檔以及官方描述的場景不同,不過上文中出現(xiàn)的情況應(yīng)該是同一個原因造成的;
好在能夠確認A庫上的multi-threaded replication slave不可能出現(xiàn)事務(wù)不一致的情況,所以就簡單粗暴的清除了slave的信息,然后重新進行了同步;

PS:GTID大法好~

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI