透過innobackupex實現對MySQL的增量備份與還原

甲骨文技術支援發表於2017-02-14
innobackupex 是由Perl指令碼語言編寫的工具,該工具對xtrabackup工具進行了封裝,為了支援MyISAM engine
xtrabackup是由知名的資料庫軟體服務企業Percona提供的一款熱備工具,有以下幾個優點:
備份集高效,完整,可用。
備份任務執行過程中不會阻塞事務。
節省磁碟空間,降低網路頻寬佔用。
備份集自動驗證機制。
恢復更快。

目前最新版本是2.4.5,下載地址:


  1. https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.5/binary/redhat/6/x86_64/Percona-XtraBackup-2.4.5-re41c0be-el6-x86_64-bundle.tar
解壓之後會有一個percona-xtrabackup-24-2.4.5-1.el6.x86_64.rpm,安裝:

  1. rpm -ivh percona-xtrabackup-24-2.4.5-1.el6.x86_64.rpm
檢視版本:

  1. [root@iZ252affh58Z scripts]# innobackupex --version
  2. innobackupex version 2.4.5 Linux (x86_64) (revision id: e41c0be)

建立備份檔案存放目錄:

mysql_full --用於存放全備份
mysql_incremental --用於存放增量備份

全備份語句:

  1. innobackupex --defaults-file=/etc/my.cnf --host=10.51.xx.xx --user=xtrabk --password=onlyxxxxx --extra-lsndir=/mnt/backup/mysql_full --stream=tar /tmp | gzip > /mnt
  2. /backup/mysql_full/xtra_fullbak_2017-02-10.tar.gz
--extra-lsndir引數的用途是在全備份目錄下生成增量備份需要的檔案,類似如下:

  1. [root@iZ252affh58Z mysql_full]# more xtrabackup_checkpoints
  2. backup_type = full-backuped
  3. from_lsn = 0
  4. to_lsn = 227008558675
  5. last_lsn = 227008558684
  6. compact = 0
  7. recover_binlog_info = 0
增量備份語句:

  1. innobackupex --defaults-file=/etc/my.cnf --host=10.51.xx.xx --user=xtrabk --password=onlyxxxxx --no-timestamp --incremental --incremental-basedir=/mnt/backup/mysql_full
  2. --stream=xbstream /tmp > /mnt/backup/mysql_incremental/xtra_incrementalbak_2017-02-14.xbstream
--incremental引數的意思是要進行增量備份
--incremental-basedir指定全備份的目錄,需要找xtrabackup_checkpoints裡的to_lsn,增量需要以全備為基礎。
--stream 增量備份只能指定為xbstream

注:如果是rpm方式安裝的xtrabackup,xbstream會自動在/usr/bin下生成,如果是原始碼方式安裝,需要複製xbstream可執行程式到/usr/bin目錄

恢復:

本例是把上述的全備和增量備份檔案複製到異機進行恢復,異機上已經安裝好了mysql軟體,引數檔案放到了/etc/下,名為my.cnf

  1. innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only /alidata1/mysqlbackup/mysql_full
--apply-log的作用是從指定的選項檔案中讀取配置資訊並應用日誌等
--redo-only:如果還有其他增量備份集需要恢復,那麼這個引數必選,它的作用是隻應用redo,而不進行回滾。

增量恢復:

  1. innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only /alidata1/mysqlbackup/mysql_full
還原:

  1. innobackupex --defaults-file=/etc/my.cnf --copy-back /alidata1/mysqlbackup/mysql_full
還原成功後會提示“completed OK!”字樣

修改許可權:

  1. chown -R mysql:mysql /alidata1/mysqlbackup/mysql_full
啟動資料庫:

  1. mysqld_safe --defaults-file=/etc/my.cnf &
特別注意:在恢復之前最好最全備和增量備份再做一次備份,比如mv到一個新目錄

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20893244/viewspace-2133530/,如需轉載,請註明出處,否則將追究法律責任。

相關文章