xtrabackup特性:
一、支持熱備份
二、支持對InnoDB、MyISAM,xtradb存儲引擎的備份
三、備份過程快速、可靠
四、備份過程不會打斷正在執行的事務
五、可以基於壓縮等功能節約磁盤空間和流量
六、自動實現備份檢驗
七、還原速度快html
(一)安裝:mysql
官網:https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/yum_repo.htmlsql
ubuntu:數據庫
wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.debubuntu
dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.debcentos
apt-get update服務器
apt-get install percona-xtrabackup-24app
centos:spa
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpmhtm
yum install percona-xtrabackup-24
(二)備份:
1徹底備份
# innobackupex --user=<用戶名> --password=<密碼> /path/to/backup
使用innobackupex備份時,其會調用xtrbackup備份全部的InnoDB表(*.frm, *.ibd),複製全部關於表結構定義的相關文件、以及MyISAM(*.MYD,*.MYI,*.frm),MERGE, CSV和ARCHIVE表的相關文件,同時還會備份觸發器和數據庫配置信息相關的文件。這些文件會被保存至一個以時間命名的目錄中
在使用innobackupex進行備份時,還能夠使用--no-timestamp選項來阻止命令自動建立一個以時間命名的目錄;如此一來,innobackupex命令將會建立一個BACKUP-DIR目錄來存儲備份數據。
二、準備(prepare)一個徹底備份
通常狀況下,在備份完成後,數據尚且不能用於恢復操做,由於備份的數據中可能會包含還沒有提交的事務或已經提交但還沒有同步到數據文件中的事務。所以,此時數據文件仍處於不一致狀態。準備的主要做用正是經過回滾未提交的事務及同步已經提交的事務到數據文件也使得數據文件處於一致狀態。
innobackupex命令的--apply-log選項可用於實現此功能。以下面的命令:
# innobackupex --apply-log <徹底備份的目錄名稱>
準備完成後,最後幾行會出現如下幾行信息:
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
160303 11:25:31 InnoDB: Starting shutdown...
160303 11:25:36 InnoDB: Shutdown completed; log sequence number 0 1617932
160303 11:25:36 innobackupex: completed OK!
在實現"準備"的過程當中,innobackupex一般還能夠使用--use-memory選項來指定其能夠使用的內存的大小,默認一般爲100M。若是有足夠的內存可用,能夠多劃分一些內存給Pprepare的過程,以提升其完成速度。
三、從一個徹底備份中恢復數據
innobackupex命令的--copy-back選項用於執行恢復操做,其經過複製全部數據相關的文件到mysql服務器的DATADIR目錄中來執行恢復過程。innobackupex經過backup-my.cnf來獲取DATADIR目錄的相關信息。
# innobackupex --defaults-file=/etc/my.cnf --copy-back <徹底備份目錄>
注意,在實現恢復時,須要關閉MySQL,而且刪除/mydata/data下的全部東西
若是執行成功,其輸出信息的最後幾行一般以下:
innobackupex: Starting to copy InnoDB log files
innobackupex: in '/backup/2016-03-03_11-21-31'
innobackupex: back to original InnoDB log directory '/mydata/data'
innobackupex: Finished copying back files.
160303 11:38:02 innobackupex: completed OK!
確保如上信息的最後一行出現"innobackupex: completed ok!"
當數據恢復到數據目錄後,還須要確保全部數據文件的所屬均爲正確的用戶,如mysql;不然,在啓動mysqld前還須要事先修改數據文件的所屬
# chown -R mysql.mysql /mydata/data
四、使用innobackupex進行增量備份
要實現第一次增量備份,能夠使用下面的命令:
# innobackupex --incremental /backup --incremental-basedir=<徹底備份目錄>
其中,BASEDIR指的是徹底備份所在的目錄,此命令執行結束後,innobackupex命令會在/backup目錄中建立一個以新的時間命名的目錄及存放全部的增量備份數據。另外,在執行過增量備份後再一次進行增量備份時,其--incremental-basedir應該指向上一次增量備份所在的目錄
須要注意的是,增量備份僅能應用於InnoDB或xtrDB表,對於MyISAM表而言,執行增量備份其實進行的是徹底備份。
準備增量備份與準備徹底備份有着一些不一樣,尤爲要注意的是:
1)須要在每一個備份(包括徹底和增量備份上),將已經提交的事務進行重放。重放後,全部的備份數據將合併到徹底備份上
2)基於全部的備份將未提交的事務進行回滾
因而,操做就變成了:
# innobackupex --apply-log --redo-only BASEDIR
接着執行:
# innobackupex --apply-log --redo-only BASEDIR --incremental-dir=INCREMENTAL-DIR-1
然後是第二個增量備份:
# innobackupex --apply-log --redo-only BASEDIR --incremental-dir=INCREMENTAL-DIR-2
恢復時,直接使用第1次的徹底備份便可