延時從庫應用之誤刪恢復
阿新 • • 發佈:2020-07-26
1主1從,從庫延時5分鐘,主庫誤刪除1個庫
故障恢復思路:
1. 5分鐘之內 偵測到誤刪除操作
2. 停從庫SQL執行緒
3. 擷取relaylog
起點 :停止SQL執行緒時,relay最後應用位置
終點:誤刪除之前的position(GTID)
4. 恢復擷取的日誌到從庫
5. 從庫身份解除,替代主庫工作
2.故障模擬及恢復
# 1.主庫資料操作 create database relay charset utf8; use relay create table t1 (id int); insert into t1 values(1); drop database relay; # 2.從庫操作(停止從庫SQL執行緒) stop slave sql_thread; # 3.從庫操作(找relaylog的擷取起點和終點) # 起點: Relay_Log_File: db01-relay-bin.000002 Relay_Log_Pos: 482 # 終點: show relaylog events in 'db01-relay-bin.000002' | db01-relay-bin.000002 | 1046 | Xid | 7 | 2489 | COMMIT /* xid=144 */ | | db01-relay-bin.000002 | 1077 | Anonymous_Gtid | 7 | 2554 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | mysqlbinlog --start-position=482 --stop-position=1077 /data/3308/data/db01-relay-bin.000002>/tmp/relay.sql # 4.從庫身份解除 stop slave; reset slave all; # 5.從庫恢復relaylog set sql_log_bin=0; source /tmp/relay.sql