全量+增量的備份/恢復(dump\xtrabackup)

 生產環境中,有時需要做MySQL的備份和恢復工作。因MySQL是在運行過程中的,做全量備份需要時間,全量備份完成後又有數據變動,此時需要增量備份輔助。如果想恢復數據到一個空庫(例如數據遷移或者上雲等更換MySQL數據庫的場景),基於全量備份+增量備份的數據進行恢復,可以更接近於原本的數據。

  工作中曾經使用過的2種方法:

1.基於dump全量備份.sql+binlog生成增量備份sql,進行全量+增量的備份/恢復操作。

  • 備份過程:

  (1)dump命令,生成全量備份sql文件。

  (2)查看全量備份文件.sql,注意這個信息:

  (3)全量備份之後,MySQL中又有增刪改操作。例如:再create一個表,並插入數據。

  (4)增量備份:執行flush logs,會生成最新的增量binlog。

  • 恢復過程:

  (1)dump出來的全量備份文件.sql 和 flush出來的增量binlog 都scp拷貝到要恢復的機器上。

  (2)恢復dump全量備份:mysql -uroot -p密碼 數據庫名 < 全量備份.sql

  (3)基於binlog生成增量備份sql:mysqlbinlog --start-position=337 --database=數據庫名 mysql-bin.000002 > 增量備份.sql

  (4)執行恢復該增量備份sql:mysql -uroot -p密碼 數據庫名 < 增量備份.sql

2.基於Percona公司的xtrabackup工具,進行全量+增量的備份/恢復操作。

   (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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章