1. 程式人生 > >記一次MHA主從不同步恢復過程

記一次MHA主從不同步恢復過程

背景:

根據生產環境故障模擬,由於生產環境主機mysql資料目錄滿,造成業務側連線mysql異常。維護人員在排查時,誤將MHA中主master的二進位制日誌全部清除,造成兩個從庫向主庫同步拉取日誌失敗,報找不到日誌錯誤。為解決該問題,同時又考慮到生產庫不能停庫,所以準備在主master庫上對相關重要庫進行熱備份,將備份後的資料在從庫上進行恢復,恢復完成後重新在從庫上開啟主從同步程序。下面為大體的故障解決過程。

 

**(1)停止從庫的複製執行緒**
stop slave;
reset slave all;

 

**(2)清除從庫相關庫的內容**
drop database tt;
create database tt;   //如果後面恢復的是多個庫,不用手動建庫

 

**(3)備份與恢復庫(可以不停業務)**

**注意:一定要記得,在執行備份操作前,一定要將主庫master上的日誌位置給記錄下來!可通過--master-data=1引數記錄**

如果只有一個庫,則按照以下方法:
備份單個庫:
mysqldump -R -E -uroot -prootlyl tt --master-data=1 >tt.sql
目標庫匯入單個庫:(需要手動建tt庫)
mysql -uroot -prootlyl tt<tt.sql

如果有多個庫,則按照以下方法:
備份多個庫:
mysqldump -R -E -uroot -prootlyl -B  tt ty --master-data=1 >tt_ty_duo.sql
目標庫匯入多個庫:(不用手動建tt和ty庫)
[

[email protected] tmp]# mysql -uroot -prootlyl <tt_ty_duo.sql

備註:--master-data=1代表在備份檔案中記錄當前二進位制日誌的位置,2代表註釋,1代表不註釋,1在主從複製中才有意義

 

**(4)檢視備份檔案的備份時間點**

即從節點應用日誌的位置,就是參考此處的

 

**(5)在從節點配置主從同步**
CHANGE MASTER TO MASTER_HOST='192.168.20.23',
MASTER_USER='master',
MASTER_PASSWORD='oracle',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=6144;

start slave;

 

(6)驗證主庫與從庫的一致性

可通過查看錶的記錄數來驗證