xtrabackup 备份与还原 mysql数据库
安装
官网地址:
xtrabackup
centos (apt,tar解压安装方式见上链接)
$ yum install http://www.percona.com\
/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
备份
- 全备份
$ xtraback --backup --target-dir=/data/backups
–backup 备份 –target-dir 备份文件目录
-
增量备份
首次全备份
$ xtrabackup --backup --target-dir=/data/backups/base
第一次增量
$ xtrabackup xtrabackup --backup --target-dir=/data/backups/base\
--incremental-basedir=/data/backups/inc1
第二次增量
$ xtrabackup --backup --target-dir=/data/backups/inc2 \
--incremental-basedir=/data/backups/inc1
–incremental-basedir 增量备份的目录
prepare (备份的数据通过prepare之后可以直接使用)
- 全备份还原准备
$ xtrabackup --prepare --target-dir=/data/backups/
–prepare 准备 调整数据内容使得可以直接复制使用
- 增量备份还原准备
三个备份的目录,base全备,inc1,inc2增量
/data/backups/base
/data/backups/inc1
/data/backups/inc2
第一个(非最后一个)还原点
$ xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base \
--incremental-dir=/data/backups/inc1
最后一个还原点
$ xtrabackup --prepare --target-dir=/data/backups/base \
--incremental-dir=/data/backups/inc2
apply-log-only 在合并最后一个增量前使用,所以inc2没有使用
如果最后一个增量也使用apply-log-only可能会导致数据的回退,也就是未能完成还原
还原
还原数据
经过prepare之后,备份得到的数据就可以直接复制到mysql的data目录里面去了 默认(/var/lib/mysql/)
有三种方式可以完成还原
首先关闭mysql-server
$ systemctl stop mysql
- copy-back
$ xtrabackup --copy-back --target-dir=/data/backups/
- move-back
$ xtrabackup --move-back --target-dir=/data/backups/
- cp,rsync
$ rsync -avrP /data/backup/ /var/lib/mysql/
注意:
1. 使用 xtrabackup 自带的move,copy命令必须清空/var/lib/mysql 目录,
不然会报错
2. 关闭mysql-server,复制完成后更 chown -R mysql.mysql /var/lib/mysql
3. 重启 systemctl start mysql 还原完成
配置
详细配置信息参见:more options
用的上的一些信息:
- xtrabackup 会默认读取/etc/mysql/my.cnf 配置,可以在my.cnf中配置xtrabackup的参数
[xtrabackup]
target_dir = /data/backups/mysql/
……
- –compress 可以在备份的时候进行压缩,以quicklz方式压缩,压缩软件(qpress ,如没有需下载),1.7G压缩至360M,可以减少全备占用的空间, prepare之间 先 xtrabackup –decompress –remove-original 解压并删除压缩文件
- 增量备份prepare还原时,最后只用关心base全备目录下面的内容
- 恢复速度非常快,等于磁盘的读写速度,逻辑备份的同时,可以使用这个软件做每天的全备和每小时的增量确保数据安全
资料来源:percona