由华为云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目录,进入对应的数据,里面已经包含了表的数据文件,如下:
由华为云RDS FOR MYSQL的备份文件恢复数据

--以下是在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;

恢复成功

上一篇:大数据技术原理与应用之【云数据库】习题


下一篇:redis实现排行榜功能