Xtrabackup有兩個主要的工具:xtrabackup、innobackupex
(1)xtrabackup只能備份InnoDB和XtraDB兩種數據表,而不能備份MyISAM數據表
(2)innobackupex-1.5.1則封裝了xtrabackup,是一個腳本封裝,所以能同時備份處理innodb和myisam,但在處理myisam時需要加一個讀鎖
1、下載安裝
http://www.percona.com/downloads/XtraBackup/LATEST/
percona-xtrabackup-2.2.9-5067.el6.x86_64.rpm
在centos6.4_x64上安裝
yum localinstall percona-xtrabackup-2.2.9-5067.el6.x86_64.rpm
安裝完生成
[root@localhost tmp]# rpm -ql percona-xtrabackup
/usr/bin/innobackupex
/usr/bin/xbcrypt
/usr/bin/xbstream
/usr/bin/xtrabackup
/usr/share/doc/percona-xtrabackup-2.2.9
/usr/share/doc/percona-xtrabackup-2.2.9/COPYING
/usr/share/man/man1/innobackupex.1.gz
/usr/share/man/man1/xbcrypt.1.gz
/usr/share/man/man1/xbstream.1.gz
/usr/share/man/man1/xtrabackup.1.gz
官方幫助文檔
http://form.percona.com/rs/percona/images/PerconaXtraBackup-2.2.9.pdf?aliId=26490527
2、進行完整備份
備份必須連接mysql,相關選項有
–host=127.0.0.1指定服務器ip
–port=3306指定端口
–socket=/tmp/mysql.sock 如果是本機可以只指定套接字文件的路徑
備份可以使用管理員帳號,也可開放一個權限最小的帳號
grant user 'bkpuser'@'localhost' identified by '123';
grant reload,lock tables,replication client on *.* to 'bkpuser'@'localhost';
flush privileges;
進行一次完整備份,需要指定的相關選項有
–defaults-file=/usr/local/mysql/my.cnf 指定使用的配置文件
指定備份所存放的目標目錄,例如 /tmp
innobackupex --user=root --password=root --socket=/tmp/mysql.sock --defaults-file=/usr/local/mysql/my.cnf /tmp
3、進行增量備份
進行第一次增量備份,需要在有一次完整備份的基礎上進行
–incremental /root/one 指定增量備份存放的目標目錄
–incremental-basedir=/tmp 指定完整備份的目錄
innobackupex --user=root --password=root --socket=/tmp/mysql.sock --defaults-file=/usr/local/mysql/my.cnf --incremental /root/one --incremental-basedir=/tmp
進行第二次增量備份,需要指定上一次增量備份的目錄
–incremental /root/two 指定這次增量備份目錄
–incremental-basedir=/root/one 知道上次增量備份目錄
innobackupex --user=root --password=root --socket=/tmp/mysql.sock --defaults-file=/usr/local/mysql/my.cnf --incremental /root/two --incremental-basedir=/root/one
4、還原一個增量備份
創建好的完整備份不能直接用來還原數據庫,需要對數據做一些准備工作,其中包括一些已經提交的事務的重放,未提交事務的回滾。
–apply-log 准備還原備份的選項
–use-memory=4G 設置准備還原數據時使用的內存,可以提高准備所花費的時間
指定備份的數據目錄
innobackupex --apply-log --use-memory=4G /tmp
還原數據,需要指定配置文件,默認會還原到/var/lib/mysql,並且保證,my.cnf中設置的數據目錄下沒有任何文件
innobackupex --copy-back --defaults-file=/usr/local/mysql/my.cnf /tmp