由华为云RDS FOR MYSQL的备份文件恢复数据
参考官方文档:https://support.huaweicloud.com/bestpractice-rds/rds_02_0005.html
操作步骤
0.环境描述
华为云RDS FOR MYSQL 的版本是 5.7
本地Linux 环境:CentOS 8,Mysql 8.0
根据华为云的备份文件,在本地Linux恢复数据
1.软件安装
下载qpress程序,并上传到ECS进行安装。
网址:http://www.quicklz.com/
在网站下载文件“qpress-11-linux.x64.tar”, 并上传到ECS上。
tar -xvf qpress-11-linux-x64.tar
mv qpress /usr/bin/
下载XtraBackup软件,并上传到ECS进行安装。(下面操作报错,一般都是这里安装版本出错了)
网址:https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/
须知:
对于MySQL 5.6和5.7,请下载XtraBackup 2.4.9及其以上版本。(指的是导出数据库的版本)
对于MySQL 8.0,请下载XtraBackup 8.0及其以上版本。
在网站下载XtraBackup,并上传到ECS上,下面以下载"percona-xtrabackup-24-2.4.20-1.el8.x86_64.rpm"为例。
rpm -ivh percona-xtrabackup-24-2.4.20-1.el8.x86_64.rpm --nodeps --force
2.文件处理
在本地Linux解压下载好的全备文件。
unzip back_file-0528.gz
创建一个临时目录backupdir。
mkdir backupdir
解压文件。
xbstream -x -p 4 < ./back_file-0528.qp -C ./backupdir/
5.6和5.7版本执行:
innobackupex --parallel 4 --decompress ./backupdir
8.0版本执行:
xtrabackup --parallel 4 --decompress --target-dir=./backupdir
清除文件
find ./backupdir/ -name '*.qp' | xargs rm -f
应用日志
5.6和5.7版本执行:
innobackupex --apply-log ./backupdir
8.0版本执行:
xtrabackup --prepare --target-dir=./backupdir
3.备份数据。
停止MySQL数据库服务。
systemctl stop mysqld.service
备份原来的数据库目录。
mv /var/lib/mysql /var/lib/mysql_bak
创建新的数据库目录并修改目录权限。
mkdir /var/lib/mysql
chown mysql:mysql /var/lib/mysql
拷贝全备文件
5.6和5.7版本执行:
innobackupex --defaults-file=/etc/my.cnf --copy-back ./backupdir
8.0版本执行:
xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=./backupdir
并修改目录权限
chown -R mysql:mysql /var/lib/mysql/data
4.重启数据库
启动数据库。
systemctl restart mysqld.service
登录数据库,查看数据恢复结果。(这里的密码是你恢复的数据库的对应密码)
mysql -u -root
show databases
以上是全量恢复的步骤,单常见的是恢复部分表的数据
1.恢复部分表数据
0,1,2 前三个步骤和上面一致
进入backupdir目录,进入对应的数据,里面已经包含了表的数据文件,如下:
--以下是在windows 环境的 mysql5.7
--创建表
表结构与要恢复的表结构一致
CREATE TABLE `re_table` (
...
)
删除新建的表空间
alter table re_table discard tablespace;
这时文件中re_table.ibd文件已经被删除了
关闭mysql服务
net stop mysql
拷贝文件,将在liunx环境恢复的ibd文件拷贝到windows的mysql的data目录中
启动mysql服务
net start mysql
关联表空间
alter table re_table import tablespace;
查看数据
select * from re_table limit 10;
恢复成功