1、下载之前的备份的全量压缩包
我使用的是备份到AWS存储桶,实验删数数据之前,我做了一次全量备份。
1.1 解压加密的压缩包到指定的目录
由于备份使用的是加密压缩包,现在解压也要用密码解压
解压格式:
openssl enc -aes-256-cbc -d -pass 'pass:密码' -in /opt/src/full_2023111704.tar.gz.enc | tar xzf - -C /tmp/recover
2、模拟删除数据
mysql> show databases;
mysql> drop database school;
3、应用redo日志
解压完成后,需要使用xtrabackup --prepare命令,将xtrabackup_logfile应用到备份的数据文件中,将数据库恢复到备份结束时的状态。
xtrabackup --prepare命令会根据xtrabackup_checkpoints文件中记录的last_lsn来确定需要应用哪些日志。
执行prepare命令:
xtrabackup --prepare --target-dir . > prepare.log 2>&1
命令执行完成后,查看日志信息:
cat prepare.log
恢复日志最后一行显示“completed OK”,表示prepare执行成功。如果最后一行日志不是“completed OK”,说明prepare执行过程中有问题,需要根据输出的日志分析具体原因。prepare完成后,xtraback_checkpoints文件中backup_type变成了full-prepared。
cat xtrabackup_checkpoints
4、操作恢复
4.1手动备份之前实例的数据
执行恢复命令之前,需要现有实例的数据清空,请注意备份。
cp -r data_16303 data_16303.bak
cd data_1630
rm -rf ./*
4.2将数据文件复制到数据目录
/usr/bin/xtrabackup --prepare --use-memory=2G --datadir=/opt/lucky/data/data_16303 --target-dir=/tmp/recover/tmp/backup/2023-11-17/full/
/usr/bin/xtrabackup --copy-back --datadir=/opt/lucky/data/data_16303 --target-dir=/tmp/recover/tmp/backup/2023-11-17/full
4.3修改文件属性
chown -R swadmin:swadmin /opt/*
4.4重启数据库服务
/opt/lucky/apps/mysql/bin/mysqld --defaults-file=/opt/lucky/conf/my_16303.cnf --user=swadmin &