模拟环境:Centos7.9
MySQL5.6
企业级备份插件
腾讯云COS
模拟场景:
删除需要恢复的库,并使用企业级备份的全量以及增量备份进行数据恢复
PS:
1.恢复数据时需要停止MySQL,以及删除当前的数据目录(/www/server/data)
建议直接重命名/www/server/data目录
2.存放路径可自定义,没有硬性规定。
1.到云存储内将企业级备份的压缩备份文件下载到本地上传到服务器指定目录,这边存放路径在/opt/backup路径下,可以使用FTP或者SSH工具
SSH工具可以使用rz命令上传,部分机器默认已经安装rz命令。没有该命令的则安装即可
rz命令安装:
- yum -y install lrzsz
复制代码
存放目录创建:
- mkdir -p /opt/backup
复制代码
全量备份恢复
2.上传后解压压缩包,解压到当前路径下
- cd /opt/backup
- tar -zxvf 2022-04-25_23-06-27
复制代码
3.将/www/server/data下的目录重命名,在接着执行数据恢复命令
- mv /www/server/data /www/server/data.bak
复制代码
4.对备份进行prepare事务回滚
- innobackupex –apply-log –redo-only /opt/backup/2022-04-25_23-06-27
复制代码
结尾出现 completed OK!,说明
5.数据恢复,这里必须要将数据目录清空,如有其他数据,建议使用新服务器或者虚拟机进行恢复。
- innobackupex –copy-back /opt/backup/2022-04-25_23-06-27
复制代码
出现completed OK!说明恢复成功
6.恢复后,查看新建立的数据目录是否有文件。
PS:这里我们企业级备份只做了单库的备份,所以恢复出来的数据没有MySQL的一些系统库。
7.将重命名的data.bak目录下的系统库文件拷贝到新数据目录下,准备启动MySQL。
拷贝前一定要将原来的ibdata文件重命名掉,不然会复制时会被覆盖掉。
- mv /www/server/data.bak/ibdata1 /www/server/data/ibdata1.bak
复制代码
然后使用cp命令复制到新数据目录下,并将新生成的/www/server/data目录授权mysql用户权限,然后启动MySQL。
- chown -R mysql:mysql /www/server/data
复制代码
8.通过phpmyadmin登录查看数据正常,然后手动将数据备份一份。
PS:由于我们企业级备份只是做了一个单库备份,未做全库备份,所以这里单库恢复使用的是全库的恢复方法。
增量备份恢复
1.新建数据表进行,并插入数据。到插件内执行备份,此操作只会备份增量。
2.找到最新的增量备份下载上传至服务器,增量需要结合全量才能进行完全的恢复。
3.增量恢复也需要清空/www/server/data数据目录,不然恢复时会提示错误。
第一次回滚全备备份,确保数据的一致性:
- innobackupex –apply-log –redo-only 2022-04-25_23-06-27
复制代码
第二次回滚增量备份合并到全量备份:
- innobackupex –apply-log –redo-only 2022-04-25_23-06-27 –incremental-dir=2022-04-26_02-55-46
复制代码
第三次恢复数据:
- innobackupex –copy-back /opt/backup/2022-04-25_23-06-27
复制代码
4.将/www/server/data.bak数据目录下系统库拷贝到/www/server/data目录下
- \cp -r -a /www/server/data.bak/* /www/server/data
复制代码
5.更改/www/server/data数据目录为mysql用户,不然无法启动MySQL。
- chown -R mysql:mysql /www/server/data
复制代码
7.验证数据
PS:数据无价,注意备份。以上所有操作都是在测试环境下操作,如果自己机器上有其他库数据,请使用自己测试机器去恢复数据。
因为要删除/www/server/data目录,这个是xtrabackup官方硬性要求,没有办法。单库恢复太复杂了,所以这里是使用都是全量备份的恢复操作。
innobackupex是xtrabackeup工具下的命令,还有文档使用到的一些参数详解:
–apply-log
通过应用同一目录下的事务日志文件xtrabackup_logfile,在BACKUP-DIR目录准备一个备份。页建立一个新的事务日志文件。innoDB的配置是从innobackupex备份时建立的文件backup-my.cnf读取。
–copy-back
复制所有的备份到他们原来的位置
–incremental-basedir
指定一个包换全库备份的目录作为增量备份的基础数据库
–redo-only
选项用于准备全库备份和合并处最有一个备份外的所有增量备份。它强制xtrabackup忽略“rollback”阶段只做“redo”.