mysqlbinlog 恢復mysql資料

2021-10-07 04:33:53 字數 1563 閱讀 3444

最近做了乙個很危險的操作,update mysql的時候沒有加where條件,導致資料全更改了(後來通過備份恢復了)。大家要引以為戒,千萬慎重。於是,我就研究了一下通過mysqlbinlog恢復資料,以下為實際操作步驟。

mysql版本5.7.24

關鍵命令 mysqlbinlog --stop-position="1723" --skip-gtids -d test /var/lib/mysql/mysql-bin.000003 | mysql -uroot -p

一、先看原資料

二、重新整理binlog日誌

flush logs;

這一步的目的是讓binlog重新整理一次,讓這個時間點之後的操作都記錄到新的binlog日誌裡;

mysql-bin.000004  就是新生成的binlog日誌

三、更新資料

update user_test set name='老五' where id=3;

四、檢視mysql-bin.000003最後一次commit的位置

從上圖可以看出最後一次提交的位置是1723。這裡一定要搞清楚你想要恢復的資料的位置,因為我想恢復到更新的操作之前,更新操作是在mysql-bin.000004中,所以我只需要恢復到mysql-bin.000003的最後一次提交就可以了。

五、恢復資料

新開乙個xshell視窗,執行命令:

mysqlbinlog --stop-position="1723" --skip-gtids -d test /var/lib/mysql/mysql-bin.000003 | mysql -uroot -p

執行完上面的命令資料就恢復到1723的位置了,我們來看下,表中的資料:

資料已經恢復。

這裡解釋下這條命令 --stop-position指的是截至的位置,也可以指定--start-position就是開始的位置,--stop-datetime截至時間,其他的可以自己查,大概意思都一樣;-d 指的是要更改的資料庫;--skip-gtids是忽略gtids報錯。其他的就不說了,很基本的mysql命令。

到此,資料恢復完畢。在此奉勸各位技術人員,關鍵資料一定要備份。

mysql資料恢復 mysqlbinlog

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

MySQL binlog實現增量恢復

mysql實時增量備份,採用binlog日誌的好處 掌控所有更改操作,必要時可用於恢復資料 資料庫主從複製的必要條件 root localhost vim etc my.cnf mysqld log bin mysql bin 啟用二進位制日誌,並指定字首 root dbsvr1 service m...

mysqlbinlog恢復誤刪資料

bug,在處理上傳出現異常時執行了delete from t resource where resource id or parent id 因為or條件導致使用者的上傳的所有資料被清空了。檢視是否有開啟log bin備份 欣慰的是,已經開啟了二進位制日誌備份。那接下來就簡單多了,找到這個二進位制日...