1. 程式人生 > >通過 mysqldump 完全恢復 MySQL 5.7 數據庫

通過 mysqldump 完全恢復 MySQL 5.7 數據庫

dump databases mysql 數據庫 日誌文件 trigger ase 還原 tex 51cto

1、備份前創建表和測試數據

mysql> create table t1 (tm datetime);
mysql> insert into t1 values(now());
mysql> insert into t1 values(now());
mysql> insert into t1 values(now());
mysql> insert into t1 values(now());
mysql> insert into t1 values(now());

技術分享圖片
2、查看當前的二進制日誌
技術分享圖片
3、全備 MySQL 數據庫

mysqldump --single-transaction --flush-logs --master-data=2 --all-databases --triggers --routines --events --set-gtid-purged=off> backup.sql

4、由於 mysqldump 添加了 --flush-logs 參數,備份後的二進制日誌保存在新的文件中
技術分享圖片
5、新增數據庫到表 t1 中
技術分享圖片
6、讀取二進制日誌文件,並導出到文件中,由於開啟了gtid,需要添加參數 --skip-gtids

mysqlbinlog --skip-gtids mysql01-bin.000008 > bin.sql

7、還原數據並查看表 t1 的記錄

mysql> source backup.sql;

技術分享圖片
8、執行從二進制日誌導出的文件,並查看結果

mysql> source bin.sql;

技術分享圖片
9、數據得到完全恢復

註意:要先讀取讀取二進制日誌的內容,再還原數據庫,因為還原數據庫會產生二進制日誌。

或者在還原前設置會話禁止寫入二進制日誌 set sql_log_bin=0。

通過 mysqldump 完全恢復 MySQL 5.7 數據庫