Percona Xtrabackup2.4.9安装使用指南

环境

系统版本:RHEL6.3


一、依赖包安装:

#yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL


二、下载和安装Percona-XtraBackup-2.4.9


1.下载Percona-XtraBackup-2.4.9

#wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm --no-check-certificate


2.安装Percona-XtraBackup-2.4.9


#rpm -ivh percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm


安装过程遇到libev.so.4问题

(1)解决 libev.so.4()(64bit)

可以自行去http://rpm.pbone.net搜索系统所需要的rpm包进行下载安装

#wget ftp://ftp.pbone.net/mirror/apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/libev-4.15-1.el6.rf.x86_64.rpm

#rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm


三、XtraBackup的使用


1.完全备份


#innobackupex --user=root --password=Mysql@123 /data/backup


但是一般情况下,这个备份是不能用于恢复的,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件处于不一致的状态,我们现在就是要通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。



2.恢复备份


(1)恢复第一步:应用日志


#innobackupex --defaults-file=/etc/my.cnf --user=root --password=Mysql@123 --apply-log /backup/db/2017-12-25_18-09-55    


(2)恢复第二步:拷贝文件


先停止mysqld服务,然后清空数据文件目录,恢复完成后再设置权限


# service mysqld stop

# mv /var/lib/mysql /var/lib/mysql_old

# mkdir -p /var/lib/mysql

# innobackupex --defaults-file=/etc/my.cnf --user=root --password=Mysql@123 --copy-back /backup/db/2017-12-25_18-09-55

# chown -R mysql.mysql /var/lib/mysql

# service mysqld start


innobackup的--copy-back选项用于执行恢复操作,它是通过复制所有数据相关文件至MySQL数据目录,因此,需要清空数据目录。我这里是将其重命名,然后再重建目录。最主要一步是将其权限更改


3.增量备份

#innobackupex --user=root --password=Mysql@123 --incremental /backup/db --incremental-basedir=/backup/db/2017-12-25_18-09-55/


其中,--incremental-basedir指的是完全备份所在的目录,此命令执行结束后,innobackupex命令会在/backup/db目录中创建一个新的以时间命名的目录以存放所有的增量备份数据。另外,在执行过增量备份之后再一次进行增量备份时,其--incremental-basedir应该指向上一次的增量备份所在的目录。


需要注意的是,增量备份仅能应用于InnoDB或XtraDB表,对于MyISAM表而言,执行增量备份时其实进行的是完全备份。

增量备份,如果需要恢复的话需要做如下操作


#innobackupex --apply-log --redo-only /backup/db/2017-12-25_18-09-55/

#innobackupex --apply-log --redo-only /backup/db/2017-12-25_18-09-55/ --incremental-dir=/backup/db/2017-12-26_18-48-56/


如果存在多次增量备份的话,就需要多次执行,如:


#innobackupex --apply-log --redo-only BACKUPDIR 

#innobackupex --apply-log --redo-only BACKUPDIR --incremental-dir=INCREMENTDIR-1

#innobackupex --apply-log --redo-only BACKUPDIR --incremental-dir=INCREMENTDIR-2


BACKUP是全备目录,INCREMENTDIR是增量备份目录,上面是有2次增量备份,如果存在多次增量备份,则需要多次运行如上的命令


4.Xtrabackup的备份压缩

Xtrabackup对备份的数据文件支持“流”功能,即可以将备份的数据通过STDOUT传输给tar程序进行归档,而不是默认的直接保存至某备份目录中。要使用此功能,仅需要使用--stream选项即可。如:

#innobackupex --user=root --password=123456 --stream=tar /data/backup | gzip > /data/backup/`date +%F_%H-%M-%S`.tar.gz