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


  1. copy-back
$ xtrabackup --copy-back --target-dir=/data/backups/


  1. move-back
$ xtrabackup --move-back --target-dir=/data/backups/


  1. 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全备目录下面的内容
  • 恢复速度非常快,等于磁盘的读写速度,逻辑备份的同时,可以使用这个软件做每天的全备和每小时的增量确保数据安全