提醒:
作任何恢復以前都給數據庫作一個完整備份,新建庫進行恢復。mysql
介紹:
bin-log是記錄着mysql全部事件的操做,能夠經過bin-log作完整恢復,基於時間點的恢復,和基於位置的恢復sql
(1)完整恢復數據庫
先執行上次完整備份恢復,再執行自上次備份後產生的二進制日誌文件恢復
這樣數據庫就能夠徹底的恢復到崩潰前的徹底狀態日誌>>mysqlbinlog mysql-bin.000001 | mysql -uroot -p事件
!!徹底恢復,通常用在執行徹底備恢復後,對於全備以後的操做,也要進行恢復,這樣才能保證不丟失數據。it
(2)基於時間點的恢復io
若是確認誤操做時間點爲2015-06-04 10:00:00執行以下date
>>mysqlbinlog --stop-date='2015-06-04 9:59:59' mysql-bin.000001 | mysql -uroot -p二進制
而後跳過誤操做的時間點,繼續執行後面的binlogim
>>mysqlbinlog --start-date='2015-06-04 10:01:00' mysql-bin.000001 | mysql -uroot -p
還有一種狀況是,恢復指定時間區間的數據
>>mysqlbinlog --start-datetime="2015-07-02 11:25:56" --stop-datetime="2015-07-02 14:20:10" mysql-bin.000001 | mysql -u root -p(3)基於位置點的恢復
基於時間區間的恢復其實並不經常使用,覺得 即便你誤操做的時間,這個時間點還可能涉及到的不僅是誤操做,也有可能有正確的操做也被跳過去了。那麼執行位置恢復
基於位置恢復,經過查看日誌文件信息,確認6259-6362爲誤操做點>>mysqlbinlog --stop-position=6259 mysql-bin.000001 | mysql -uroot -p #從1開始至6259的事件讀,不包括6259事件
>>mysqlbinlog --start-position=6363 mysql-bin.000001 | mysql -uroot -p #從6259的事件開始讀
恢復指定位置區間恢復數據 >>mysqlbinlog --start-position=5786 --stop-position=6254 mysql-bin.000001 | mysql -uroot -p