1. 程式人生 > 實用技巧 >延時從庫應用之誤刪恢復

延時從庫應用之誤刪恢復

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