mysql5.7   INNODB恢復指定日期的數據

運維時刻面臨着悲劇。


昨天,公司同事誤刪了一個表的數據,而且還是TRUNCATE。


能恢復的數據的唯一方法就是binlog了。


以前知道這個可以恢復數據,只是這次真的要實踐的時候還是在網上亂搜了一通。


1:找到binlog目錄


2:用mysqlbinlog 命令提取binlog裏的時間段,導出爲sql文件。

    mysqlbinlog --start-datetime="2016-08-11 17:19:00" --stop-datetime="2016-09-01 20:00:00" /data/mysql/data/mysql-bin.000003 >./restore_db.sql


3:得到了sql文件之後就可以恢復了。上面的--start-datetime  是開始時間,--stop-datetime是結束時間,也可以用 --start-position - --stop-position,更精準。 


4:恢復:操作之前先備份您的數據庫。萬一發生意外可以及時恢復。

      mysql  -u root -p    登錄數據庫

      注意!!!!!!用此文件恢復數據庫跟平時恢復不一樣,binlog裏記錄的是哪個數據庫被修改的記錄,所以,用此文件恢復,目標不可以定義。比如說,裏面有a,b,c三個數據庫,只有a數據出問題。我想單獨恢復a是不行的,裏面包含了對b,c數據的操作。一樣會對b,c數據進行修改。切記。最好的方法是備份一遍,到另外一臺機器操作。

      mysql>source    /path/restore_db.sql   (path代表路徑)

      執行的時間視文件大小而定。耐心等待。一會數據恢復完成了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章