mysqlbinlog恢復資料注意事項 轉

2021-09-12 02:15:13 字數 1344 閱讀 5887

前言:

上次有個有個朋友恢復 mysql 資料,一直恢復不成功,也沒有報錯資訊,使用的環境是 mysql 5.7 使用了 gtid 以及 binlog 格式為 row。現在我主要總結下沒有恢復成功可能的原因以及解決方法。

--base64-output=decode-rows主要是解析 row 級別 binlog 日誌時使用。

我們解析日誌的時候都會使用:

# mysqlbinlog -v --base64-output=decode-rows --start-position=*** --stop-position=*** mysql-bin.0000xx
這是我們解析 binlog 日誌時使用的命令,我們可以很直觀的分析 binlog 日誌。

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

--skip-gtids=***的作用為: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 運維**

分類:

mysql

標籤:

mysql

好文要頂

關注我收藏該文

paul_hch

關注 - 14

粉絲 - 60

+加關注 00

linux統計某個特定檔名的大小總和【原創】

關於gtid模式下備份時 --set-gtid-purged=off 引數的實驗***

posted @ 2018-07-23 11:05

收藏

mysql binlog恢復資料

mysql執行show master status 命令 檢視binlog檔案 如 mysql bin.000020 執行 命令mysqlbinlog no defaults database 資料庫名稱 start datetime 2020 01 01 00 00 00 stop datetim...

通過mysqlbinlog 恢復資料

前提資料庫開啟了bin log記錄日誌。檢視日誌 重新整理日誌 flush logs 再次檢視 向表中插入一條資料 現在執行delete誤操作,刪除所有的資料。delete from admin 先檢視binlog,生成002.sql mysqlbinlog mysql bin.000002 002...

利用 MySQL bin log 恢復資料表

今天公司一同事使用典型的 update 不帶 where 語句 誤操作把資料庫中一張極重要資料表 player 給 做掉了 還算幸運的是該資料庫每3個月會完整備份一次,最近一次的備份點為6月30日,再加上 bin log 保留了30天的資料,可以根據這兩份資料還原資料表的內容。方法看上去非常簡單清晰...