下载备份工具

下载qpress程序(解压缩)

yum -y install wget && wget http://www.quicklz.com/qpress-11-linux-x64.tar
tar -xvf qpress-11-linux-x64.tar
chmod 755 qpress
mv qpress /usr/bin/

下载XtraBackup软件(备份恢复)

对于MySQL 5.6和5.7,请下载XtraBackup 2.4.9及其以上版本。
对于MySQL 8.0,请下载XtraBackup 8.0及其以上版本

二进制安装

wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.21/binary/tarball/percona-xtrabackup-2.4.21-Linux-x86_64.glibc2.12.tar.gz
tar xvf percona-xtrabackup-2.4.21-Linux-x86_64.glibc2.12.tar.gz

yum安装

$ wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/\
binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

数据库备份

完全备份

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456  /tmp/

在这里插入图片描述
你定义的目录下会生成一个以时间日期为名字的目录,里面包含备份的文件

ls /tmp/2021-12-30_22-23-21/

在这里插入图片描述
xtrabackup_checkpoints 里有记录lsn
在这里插入图片描述

增量备份

在上次执行完全量后,新增一个表为1111,然后再执行一次增量

innobackupex --defaults-file=/etc/my.cnf  --user=root --password=123456 --incremental /tmp/ --incremental-basedir=/tmp/2021-12-30_22-23-21/

–incremental 表示此次为增量备份
-incremental-basedir=/tmp/2021-12-30_22-23-21/ 表示指定全量备份目录

查看两次备份的xtrabackup_checkpoints
在这里插入图片描述
全量的类型为:backup_type = full-backuped
增量的类型为:backup_type = incremental
全量备份的lsn to_lsn = 116007228269
增量备份的lsn from_lsn = 116007228269
全量备份的终点和增量的起点是一样的。

数据库恢复

全量备份恢复

#停止要恢复的mysql服务并备份原数据文件
systemctl stop mysqld
mkdir /tmp/mysql/
mv /var/lib/mysql/* /tmp/mysql/

#解压备份文件,如果有.qp格式的压缩文件,需要用到开头安装的qpress 进行解压

mkdir /tmp/backdir/
tar -axf *.tar.gz -C /tmp/backdir/
cd  /tmp/2021-12-30_22-23-21

如果格式为.qp的压缩文件,先解压

for f in `find ./ -iname "*\.qp"`; do qpress -dT2 $f  $(dirname $f) && rm -f $f; done

如果为正常文件,直接执行恢复操作

#应用日志
innobackupex --detaults-file=/etc/my.cnf --apply-log /tmp/backdir/2021-12-30_22-23-21/
#恢复备份文件到mysql目录
innobackupex --defaults-file=/etc/my.cnf --copy-back /tmp/backdir/2021-12-30_22-23-21/
#递归修改文件属性
chown -R mysql:mysql /var/lib/mysql/
重启服务检查恢复数据
systemctl start mysqld

增量备份恢复

对于增量备份的Prepare阶段,有2个需要注意的地方,一个是提交的事务需要replayed,一个未提交的事务需要rollback。如果在Prepare阶段replay了已提交的事务以及回滚了未提交的事务,则后续的增量备份无法添加到当前全备。因此在Prepare阶段全备应使用–redo-only选项。对于存在多次增量的情形,仅仅只有最后一个增量不需要使用–redo-only
选项。如果使用了的话,rollback将由服务器启动的时候来完成。

参照全量备份恢复把增量的备份文件复制到目标服务器(包含全量和增量文件)
停止mysql服务,删除或者mv掉/var/lib/mysql

开始prepare 应用日志

prepare 全备日志

innobackupex --apply-log --redo-only  /tmp/2021-12-30_22-23-21/

再prepare 增备日志

innobackupex --apply-log   /tmp/2021-12-30_22-23-21/  --incremental-dir=/tmp/2021-12-30_22-36-27

说明:最后一次的增备不带redo-only参数

恢复数据

可以使用copy-back命令进去复制

innobackupex --defaults-file=/etc/my.cnf --user='root' --password='root' --copy-back /tmp/2021-12-30_22-23-21

也可以手动复制
mv /tmp/2021-12-30_22-23-21/* /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql/
systemctl start mysqld

完毕,做此记录方便日后查阅。

参考地址
https://www.cnblogs.com/zhoujinyi/p/4088866.html
https://blog.csdn.net/lt89102476/article/details/84795973

更多推荐