您好,登錄后才能下訂單哦!
模擬數據庫被×××,導致數據庫被刪除后的恢復操作。
1.先來個全備:
mysqldump -uroot -pgq266566 -A --master-data=2 > all.sql
2.模擬線上生產環境。備份完后會有新的修改。
3.然后模擬數據庫被×××。chain_web被刪除了。
4.上線發現被刪除,先用備份恢復chain_web庫 。mysql -uroot -p123456 -o chain_web < all.sql
只恢復chain_web庫。
恢復到備份時候的狀態。
5.根據備份時候的--master-data=2 找到 position位置 在all.sql備份文件中。
6.從備份位置解析binlog
mysqlbinlog --no-defaults -v -v --base64-output=decode-rows --start-position=194 mysql-bin.000009 > test.sql
--base64-output參數用來控制binlog部分是否顯示出來的,指定為decode-rows表示不顯示binglog部分
找到drop時候的位置點。
可以看到是8029
然后再根據這倆位置 解析binlog:
mysqlbinlog --start-position=194 --stop-position=8029 mysql-bin.000009 --database=chain_web > test4.sql
(解析binlog的時候加--no-defaults -v -v --base64-output=decode-rows參數可以看到比較直觀的sql,但是會出現無法導入數據庫的現象.可以先加參數解析出來 查看解析結果確認沒問題后,再不加參數進行解析,然后導入相應的庫中。如果開了GTID的話,在解析時候加參數--skip-gtids=true )
(--datebase=chain_web 意思是只解析chain_web庫的操作 因為只刪除了chain_web庫 chain庫沒有操作 不需要解析binlog 否則導入會報主鍵沖突)
vim test4.sql 可以看到沒有drop語句了。然后就可以導入數據庫中
mysql -uroot -p123456 chain_web < test4.sql
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。