某天早上公司測試人員,寫了一條坑爹的delete from語句,沒在測試環境執行,直接在生產庫執行導致目標表資料全部被刪除;部分業務出現問題,廣告無法正常展示,需及時恢復業務。
2.通過下面命令讀取binlog二進位制檔案
mysqlbinlog --database prod --base64-output=decode-rows -v mysql-bin.026846 > binlog.sql
通過grep過濾指定的表和delete from操作,找到前後的position
3.獲取到position後,通過定位position使用如下命令再次讀取binlog檔案,得到誤操作sql的記錄
mysqlbinlog --database prod --base64-output=decode-rows -v mysql-bin.026846 --start-position="213044104" --stop-position="213044642" > restore.sql
4.將delete from語句格式化為insert into語句,也可以將語句拷貝到excel進行處理
cat ad.sql | sed -n '/###/p' | sed 's/### //g;s/\/\*.*/,/g;s/delete from/insert into/g;s/where/values/g;' | sed -r 's/(@28.*),/\1;;;;;;;;;;;;;/g' | sed 's/@[0-9]*=/@@@@@=/g' > restore.sql
5.執行修改好的restore.sql,恢復誤刪除的資料 通過binlog恢復mysql備份之前的資料
其中我們提到了的備份資料庫要晚與要恢復的資料庫時間,即要恢復的資料庫在前,而備份的資料庫在後。當時我提到說會單獨寫一篇文章講解這個情況,本篇文章我就來介紹如何通過binlog日誌恢復比備份資料庫早時的資料庫狀態。我們還是以上篇文章的資料及備份檔案為基礎,來進行本篇文章的講解。ailanni資料庫完整...
阿里雲mysql備份資料恢復
操作只供參考,實際操作中可能出現不同的報錯或其它提示 wget 2 增加許可權 chmod x hins1540971 xtra 20160918230904.tar.gz 3 使用rds解壓指令碼,解壓rds備份檔案,如下 sh rds backup extract.sh f home hins1...
MySQL 通過 binlog 恢復資料
通過了解 binlog 日誌的相關配置,簡單掌握通過 binlog 對資料庫進行資料恢復操作 任何成熟軟體都會有一套成熟的日誌系統,當軟體出現問題時,這些日誌就是查詢問題 的寶庫。同樣,mysql 也不例外,也會有一系列日誌記錄 mysql 的執行狀態。mysql 主要有以下幾種日誌 這些日誌均需要...