mysqlbinlog恢復數據注意事項【轉】


mysqlbinlog 恢復數據注意事項

前言:
上次有個有個朋友恢復 MySQL 數據,一直恢復不成功,也沒有報錯信息,使用的環境是 MySQL 5.7 使用了 GTID 以及 binlog 格式為 ROW。現在我主要總結下沒有恢復成功可能的原因以及解決方法。

1.不要使用 base64-output=decode-rows 參數

--base64-output=decode-rows主要是解析 ROW 級別 binlog 日志時使用。
我們解析日志的時候都會使用:

# mysqlbinlog -v --base64-output=decode-rows --start-position=XXX --stop-position=XXX mysql-bin.0000XX

 

這是我們解析 binlog 日志時使用的命令,我們可以很直觀的分析 binlog 日志。

但是我們想要恢復到數據庫中的時候,不能使用--base64-output=decode-rows 參數,否則是無法恢復到數據庫的。

2.是否使用--skip-gtids=true 參數

--skip-gtids=xxx的作用為:mysqldump
是否使用--skip-gtids=true 參數,要根據情況來定;
第一種情況:
如果我們是要恢復數據到源數據庫或者和源數據庫有相同 GTID 信息的實例,那么就要使用該參數。如果不帶該參數的話,是無法恢復成功的。因為包含的 GTID 已經在源數據庫執行過了,根據 GTID 特性,一個 GTID 信息在一個數據庫只能執行一次,所以不會恢復成功。

# mysqlbinlog --skip-gtids=true  mysql-bin.000012 |mysql -uroot -p

 

或者

# mysqlbinlog --skip-gtids=true  mysql-bin.000012 > backup.sql
mysql -uroot -p < backup.sql

 

第二種情況:
如果是恢復到其他實例的數據庫並且不包含源實例的 GTID 信息,那么可以不使用該參數,使用或者不使用都可以恢復成功。

 

轉自

mysqlbinlog恢復數據注意事項 – UnixFBI 運維特工 http://www.unixfbi.com/499.html


免責聲明!

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



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