阿里雲mysql數據庫恢復總結,mysql binlog日志解析


由於意外。。阿里雲mysql中有一張表被全部刪除了,深吸三口氣候,開始解決。

首先用凌晨的自動備份的,進行全量恢復,然后找binlog日志(見下文),查找從全量備份到數據刪除之間的記錄

這導致了一個問題,為了恢復那一張表,其他的表的數據也回滾到了凌晨備份的事后。。。

由於當時比較緊張,而且時間有限,所以考慮不周,事后總結:

應該在數據庫實例中新建一個新的臨時庫,將備份恢復到臨時庫中,然后在臨時庫導出被誤刪的表的數據,然后再將數據導入到正式的數據庫中對應表中。

最后再從binlog日志文件中只尋找刪除的表,從凌晨到刪除這幾個小時之間的數據。

 

數據丟失對任意一個網站來說都是災難性的,在開發過程中,update和delete操作一定要跟上條件,而且條件中堅決杜絕出現類似where 1=1  恆等的情況,以免后面的and條件因為邏輯或者外星人入侵等問題沒有組裝上,從而導致悲劇產生。

 

 

mysql binlog3種格式,row,mixed,statement. 解析工作

mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000144 |more

 

--base64-output=DECODE-ROWS: 會顯示出row模式帶來的sql變更。

-v :顯示statement模式帶來的sql語句

 

outous-MacBook-Pro:bin user$ ./mysqlbinlog --base64-output=DECODE-ROWS -v /Users/dir/mysql-bin.000186 > /Users/dir/log.txt
outous-MacBook-Pro:bin user$ pwd

/usr/local/mysql/bin

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM