MySQL备份工具xtrabackup

xtrabackup是percona公司开发的一款开源免费的MySQL热备份工具,备份期间,不会锁库,不影响正常的业务写入,并且不会对MySQL性能产生大的影响。

xtrabackup属于物理备份,备份、恢复速度快,适合数据量大,整库备份的场景。

  • 对于InnoDB、XtraDB和MyRocks 存储引擎,不影响业务写入。
  • 对于MyISAM、Merge 和 Archive 存储引擎,备份期间,只能读,不能写。

1. xtrabackup下载及安装

xtrabackup官方下载地址:

https://www.percona.com/software/mysql-database/percona-xtrabackup

下载rpm包:
percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm

安装:
yum install -y ./percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm

2. xtrabackup全量备份

2.1 backup(备份)

xtrabackup --host=127.0.0.1 --user=user --password='password' --backup --target-dir=/data/backups/

参数:
--host,指定主机IP
--user,指定MySQL用户名
--password,指定MySQL密码
--backup,创建备份
--target-dir,指定备份目录

如果指定的备份目录中有文件存在,则程序会报错退出。

2.2 prepare(处理备份)

在上一个阶段备份完成之后,实际上数据文件中的数据并不是一致的,因为在拷贝文件的时候,有些文件可能已经被修改,因此需要根据redo log做prepare,也就是InnoDB崩溃恢复的过程,让数据文件重新回到一致性备份点。

xtrabackup --prepare --target-dir=/data/backups/

参数:
--prepare,指定prepare操作,InnoDB崩溃恢复过程。

2.3 restore(备份恢复)

有了备份文件,就可以使用备份来恢复MySQL实例。

xtrabackup --copy-back --datadir=/mysql/data/ --target-dir=/data/backups/

参数:
--datadir,MySQL数据目录
--target-dir,备份目录

设置目录属主:
chown -R mysql:mysql /mysql/data/

启动MySQL:
/usr/local/mysql/bin/mysqld_safe --defaults-file=/home/mysql/etc/my.cnf &

3. xtrabackup增量备份

3.1 增量备份

(1)创建一个全量备份
xtrabackup --host=127.0.0.1 --user=user --password='password' --backup --target-dir=/data/backups/base

(2)基于全量备份,创建一个增量备份
xtrabackup --host=127.0.0.1 --user=user --password='password' --backup --target-dir=/data/backups/inc1 --incremental-basedir=/data/backups/base

(3)基于增量备份,再创建一个增量备份
xtrabackup --host=127.0.0.1 --user=user --password='password' --backup --target-dir=/data/backups/inc2 --incremental-basedir=/data/backups/inc1

(4)prepare增量备份
xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base

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

3.2 备份恢复

xtrabackup --copy-back --datadir=/mysql/data/ --target-dir=/data/backups/base

设置目录属主:
chown -R mysql:mysql /mysql/data/

启动MySQL:
/usr/local/mysql/bin/mysqld_safe --defaults-file=/home/mysql/etc/my.cnf &

4. xtrabackup压缩备份

xtrabackup具备压缩备份的功能,通过以下参数设置备份压缩。

  • --compress,进行备份压缩。
  • --compress-threads,指定了并发压缩的线程数。
  • --decompress,解压缩。
4.1 压缩备份

xtrabackup --host=127.0.0.1 --user=user --password='password' --backup --compress --target-dir=/data/compressed/

4.2 备份解压缩

在进行prepare之前,需要对压缩过的备份文件进行解压缩。

xtrabackup --decompress --target-dir=/data/compressed/

注:
备份解压缩时报错,无法找到qpress命令,需要先安装qpress工具。
sh: qpress: command not found

wget http://www.quicklz.com/qpress-11-linux-x64.tartar xvf qpress-11-linux-x64.tar
cp qpress /usr/bin

4.3 prepare

xtrabackup --prepare --target-dir=/data/compressed/

4.4 备份恢复

xtrabackup --copy-back --datadir=/mysql/data/ --target-dir=/data/compressed/

设置目录属主:
chown -R mysql:mysql /mysql/data/

启动MySQL:
/usr/local/mysql/bin/mysqld_safe --defaults-file=/home/mysql/etc/my.cnf &

文章评论

0条评论