利用 MySQL bin log 恢復資料表

2021-09-12 03:13:42 字數 1466 閱讀 3093

今天公司一同事使用典型的「update 不帶 where 語句」誤操作把資料庫中一張極重要資料表 player 給「做掉了」,還算幸運的是該資料庫每3個月會完整備份一次,最近一次的備份點為6月30日,再加上 bin-log 保留了30天的資料,可以根據這兩份資料還原資料表的內容。方法看上去非常簡單清晰,但是具體執行起來還是遇到了很多問題,下面整理了一些關鍵問題,以備以後災難再發生時可供參考。

mysql> create table test2 (ids int);

query ok, 0 rows affected (0.13 sec)

mysql> insert into test2 values (3);

query ok, 1 row affected (0.01 sec)

mysql> insert into test2 values (4);

query ok, 1 row affected (0.01 sec)

mysql> insert into test2 values (5);

query ok, 1 row affected (0.01 sec)

mysql> insert into test2 values (1);

query ok, 1 row affected (0.00 sec)

mysql> insert into test2 values (11);

query ok, 1 row affected (0.01 sec)

mysql> insert into test2 values (1);

mysql> update test2 set ids=5;

query ok, 6 rows affected (0.01 sec)

rows matched: 7  changed: 6  warnings: 0

找到mysql的binlog日誌位置

mysql-bin.000020

然後根據日誌生成可讀檔案

mysqlbinlog  mysql-bin.000020  >1.sql

[root@centos mysql]# cat 1.sql|grep test2;

create table test2 (ids int)

insert into test2 values (1)

insert into test2 values (3)

insert into test2 values (4)

insert into test2 values (5)

insert into test2 values (1)

insert into test2 values (11)

insert into test2 values (1)

update test2 set ids=5

可以從日誌裡篩選出來表被改的過程

最後先建立一張新錶,然後將語句插入到新表裡,最後插入到正式表裡

利用mysqlbinlog工具恢復MySQL資料庫

如果mysql伺服器啟用了二進位制日誌,你可以使用mysqlbinlog工具來恢復從指定的時間點開始 例如,從你最後一次備份 直到現在或另乙個指定的時間點的資料。關於啟用二進位制日誌的資訊,參見5.11.3節,二進位制日誌 對於 mysqlbinlog的詳細資訊,參見mysql手冊8.6節,mysq...

利用 MySQL bin log 恢復資料表

今天公司一同事使用典型的 update 不帶 where 語句 誤操作把資料庫中一張極重要資料表 player 給 做掉了 還算幸運的是該資料庫每3個月會完整備份一次,最近一次的備份點為6月30日,再加上 bin log 保留了30天的資料,可以根據這兩份資料還原資料表的內容。方法看上去非常簡單清晰...

mysql資料恢復 mysqlbinlog

恢復資料的關鍵是資料庫開啟了log bin window下my.ini裡 log bin mysql bin 日誌檔案的字首,可修改,如 mysql bin.000001 然後預設放在資料庫根目錄的data資料夾裡 如果誤刪了資料庫,可以用之前備份的資料庫 如2014 05 12 doc命令列下用m...