1. 程式人生 > >MySQL5.7下面,誤操作導致的drop table db1.tb1; 的恢復方法:

MySQL5.7下面,誤操作導致的drop table db1.tb1; 的恢復方法:

新的 host 復制 解壓 mat rop mas mysql5.7 跳過

MySQL5.7下面,誤操作導致的drop table db1.tb1; 的恢復方法:


0、停業務數據寫入。【iptables封禁】


1、從備份服務器上拉取最新的一個全備文件,恢復到一個臨時的服務器上,解壓並啟動mysqld。

2、在這臺新的slave上執行如下命令:

2.1 先配置好復制關系, change master to 到當前誤操作的服務器,但是不要啟動復制進程。【類似如下命令】

>CHANGE MASTER TO 
MASTER_HOST='172.16.20.73',
MASTER_USER='rpl',
MASTER_PASSWORD='rpl',
master_log_file='master-bin.000005',
master_log_pos=245;


2.2 在新的slave上執行復制過濾操作:

> CHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE = ('db1.tb1');

2.3 開啟slave 復制,到出問題的地方之前停下來

> start slave io_thread ;
> start slave sql_thread until master_LOG_FILE='mysql-bin.000010',master_LOG_POS=10020;   -- 執行到最後一次沒問題的位移點

2.4 在slave上跳過這個誤操作的事務

> set GTID_NEXT='56bc2f04-7556-11e8-b3b6-000c29ba98ce:1492' ;  -- 這裏的這個就是應該跳過的那個事務(可以從主庫的binlog裏面找到這個gtid編號)
> begin ;
> commit ;
> set GTID_NEXT="AUTOMATIC";
> start slave ;
> show slave status \G 查看復制情況


2.5 將這個從庫的db1.tb1 通過mysqldump方式導出,然後倒入到線上誤操作的實例裏面。 【大表的話,可以用xtrabackup備份單表,然後import倒入表空間來完成數據的倒入】





MySQL5.7下面,誤操作導致的drop table db1.tb1; 的恢復方法: