在官网中,复制相关链接下载最新版本(建议使用当前发布版本前6个月左右的稳定版本)
https://www.percona.com/downloads/XtraBackup/LATEST/
1、下载和安装
#下载rpm安装包
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.3/binary/redhat/6/x86_64/percona-xtrabackup-2.3.3-1.el6.x86_64.rpm
1.2 安装依赖
yum install -y perl-DBD-MySQL per-DBI perl-Time-HiRes libaio*
1.3 安装rpm包
rpm -ivh percona-xtrabackup-2.3.-.e16.x86_64.rpm warning: percona-xtrabackup-2.3.-.e16.x86_64.rpm: Header V4 DSA/SHA1 Signature,key ID cd2efd2a: NOKEY
error: Faild dependencies:
lidev.so4()(64bit) is needed by percona-xtrabackup-2.3.-.e16.x86_64
1.4 安装libv.so()(64bit)
地址:http://rpmfind.net/linux/RPM/index.html 搜索libev.so.4()(64bit),下载 rpm -ivh libev-4.04-.e16.x86_64.rpm
1.5 安装Xtrabackup
rpm -ivh percona-xtrabackup-2.3.-.e16.x86_64.rpm Preparing... ########################################### [%]
:percona-xtrabackup ########################################### [%]
安装方法二:
#使用yum安装
安装percona源
rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
#使用yum安装percona-xtrabackup:
yum -y install percona-xtrabackup
1.6、检查安装结果
rpm -qa |grep xtraback percona-xtrabackup-2.3.-.e16.x86_64
rpm -ql percona-xtrabackup-2.3.-.e16.x86_64
/usr/bin/innobackupex/usr/bin/xtrabackup
/usr/bin/doc/percona-xtrabackup-2.3.
/usr/bin/doc/percona-xtrabackup-2.3./COPYING
/usr/share/man/man1/innobackupex..gz/usr/share/man/man1/xtrabackup..gz
Xtrabackup常用参数
--user=USER #指定备份用户,不指定的话为当前系统用户
--password=PASSWD #指定备份用户密码
--port=PORT #指定数据库端口
--defaults-group=GROUP-NAME #在多实例的时候使用
--host=HOST #指定备份的主机,可以为远程数据库服务器
--apply-log #回滚日志
--database #指定需要备份的数据库,多个数据库之间以空格分开
--defaults-file #指定mysql的配置文件
--copy-back #将备份数据复制回原始位置
--incremental #增量备份,后面跟要增量备份的路径
--incremental-basedir=DIRECTORY #增量备份时使用指向上一次的增量备份所在的目录
--incremental-dir=DIRECTORY #增量备份还原的时候用来合并增量备份到全量,用来指定全备路径
--redo-only #对增量备份进行合并
--rsync #加快本地文件传输,适用于non-InnoDB数据库引擎。不与--stream共用
--safe-slave-backup
--no-timestamp #生成的备份文件不以时间戳为目录.
2、备份与恢复
2.1、全量备份与恢复
完全备份目录:/data/backup/full
完全备份与增量备份每次命令操作成功的标志是,日志结尾处打印【completed OK!】
#全量备份:
innobackupex --user=root --password /data/backup/full
说明:
上面的命令在我的/data/backup/full 目录生成了一个文件夹【--20_10--】
一般情况下,这个备份不能用于恢复,因为备份的数据中可能含有尚未提交的事务或者已经提交的事务但尚未同步至数据文件的事务,此时数据文件处于不一致的状态。
因此,我们现在就是要通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。
innobackupex --user=root --password --defaults-file=/data/mysql/my.cnf --apply-log /data/backup/full/--20_10--
#--apply-log 参数就是开启恢复过程
2.2、 恢复操作演练
1)关闭数据库,备份原数据,创建新的数据目录
执行过程:
[root@mysql ]# /data//mysql stop
Stoping MySQL...
[root@mysql ]# mv /data//data/ /data//data_bak
[root@mysql ]# mkdir /data//data
恢复全备必须恢复到空目录里,不然 会报错。
2)执行innobackupex恢复命令
[root@mysql ]# innobackupex --defaults-file=/data//my.cnf --user=root --password= --copy-back /data/backup/full/--20_10--
3)对新目录授权,此操作需要在innobackupex恢复命令后
chow -R mysql.mysql /data/mysql/data
4)重启服务后,并检查数据是否恢复。
[root@mysql ]# /data//mysql start
Starting MySQL
[root@mysql ]# ps -ef|grep
#登录数据查看已经恢复的数据文件。
2.2、增量备份与恢复
环境备份目录说明:
增量备份目录1:/data/backup/inc1
增量备份目录2:/data/backup/inc2
1)#全量备份
innobackupex --defaults-file=/data//my.cnf --user=root --password= /data/backup/full
2)第一次增量备份
innobackupex --defaults-file=/data//my.cnf --user=root --password= --incremental /data/backup/inc1 --incremental-basedir=/data/backup/full/--20_10--
# --incremental-basedir 指的是完全备份所在的目录
# 此命令执行结束后,innobackupex命令会在/data/backup目录中创建一个新的以时间命名的目录以存放所有的增量备份数据。
# 另外,在执行过增量备份之后再一次进行增量备份时,其--incremental-basedir应该指向上一次的增量备份所在的目录。
# 需要注意的是,增量备份仅能应用于InnoDB或XtraDB表,对于MyISAM表而言,执行增量备份时其实进行的是完全备份。
2)第二次增量备份
innobackupex --defaults-file=/data//my.cnf --user=root --password= --incremental /data/backup/inc2 --incremental-basedir=/data/backup/inc1/--20_11--
# 如果需要恢复的话需要先执行如下操作
innobackupex --apply-log --redo-only /data/backup/full/--20_10--
innobackupex --apply-log --redo-only /data/backup/full/--20_10-- --incremental-dir=/data/backup/inc1/--20_11--
# 如果存在多次增量备份的话,就多次执行如下命令。此处执行针对的是第二次增量备份
innobackupex --apply-log --redo-only /data/backup/full/--20_10-- --incremental-dir=/data/backup/inc2/--20_11--
# 恢复操作演练,需先停掉服务器并迁移已有的数据目录,详情见全量备份
# 执行恢复命令
innobackupex --defaults-file=/data//my.cnf --user=root --password= --copy-back /data/backup/full/--20_10--
补充说明:
指定使用 --databases 可以指定库来备份
innobackupex --default-file=/data//my.cnf --user-root --password- --databases="dadong" /data/backup/
#指定表来备份
innobackupex --default-file=/data//my.cnf --user=root --password= --databases="dadong test" /data/backup/
#指定压缩包备份 --stream
innobackupex --default-file=/data//my.cnf --user=root --password= --stream=tar /backup/full/|gzip >/backup/full/back_$(date +%F).tar.gz