生產環境中,有時須要作MySQL的備份和恢復工做。因MySQL是在運行過程當中的,作全量備份須要時間,全量備份完成後又有數據變更,此時須要增量備份輔助。若是想恢復數據到一個空庫(例如數據遷移或者上雲等更換MySQL數據庫的場景),基於全量備份+增量備份的數據進行恢復,能夠更接近於本來的數據。mysql
工做中曾經使用過的2種方法:sql
(1)dump命令,生成全量備份sql文件。數據庫
(2)查看全量備份文件.sql,注意這個信息:app
(3)全量備份以後,MySQL中又有增刪改操做。例如:再create一個表,並插入數據。 工具
(4)增量備份:執行flush logs,會生成最新的增量binlog。spa
恢復過程: 日誌
(1)dump出來的全量備份文件.sql 和 flush出來的增量binlog 都scp拷貝到要恢復的機器上。 blog
(2)恢復dump全量備份:mysql -uroot -p密碼 數據庫名 < 全量備份.sqlrem
(3)基於binlog生成增量備份sql:mysqlbinlog --start-position=337 --database=數據庫名 mysql-bin.000002 > 增量備份.sqlit
(4)執行恢復該增量備份sql:mysql -uroot -p密碼 數據庫名 < 增量備份.sql
(1)全量備份
innobackupex --user=用戶名 --password=密碼 全量備份文件存放目錄。
一樣,期間有些增量操做,建表,增刪數據等
(2)增量備份
innobackupex --user=用戶名 --password=密碼 --incremental 增量備份文件存放目錄 --incremental-basedir=依賴的上一次全量備份或增量備份
(3)恢復日誌的準備
innobackupex --apply-log --redo-only 全量備份文件存放目錄
innobackupex --apply-log --redo-only 全量備份文件存放目錄 --incremental-dir=增量備份文件存放目錄
innobackupex --apply-log 全量備份文件存放目錄
(4)恢復數據
關閉要恢復的數據庫
/etc/init.d/mysqld stop
mv data data_old
mv undo undo_old
mv undo_log undo_log_old
mkdir -p data undo_log
innobackupex --move-back 全量備份文件存放目錄
chown mysql:mysql -R data/
chown mysql:mysql -R undo_log/
/etc/init.d/mysqld start