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


  生產環境中,有時需要做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生成增量備份sqlmysqlbinlog --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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM