【MySQL】全量+增量的備份/恢復

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

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

 

1.基於dump全量備份.sql+binlog生成增量備份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生成增量備份sqlmysqlbinlog --start-position=337 --database=數據庫名 mysql-bin.000002 > 增量備份.sqlit

  (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

相關文章
相關標籤/搜索