Featured image of post 通过华为云数据库.qp备份文件恢复自建数据库

通过华为云数据库.qp备份文件恢复自建数据库

华为云云数据库RDS原生支持全量物理备份和Binlog备份,可以非常方便的在云端进行数据恢复,但是近期,排查缺陷需要将数据恢复至本地自建数据库中,操作中发现控制台下载的全量物理备份文件是.qp格式的,在研究后特此整理了测试环境的完整恢复过程。

主要步骤:

  • 本地 Centos8.2 环境下自建 mysql8.0.25
  • 下载安装 qpress、Percona XtraBackup
  • 下载数据库物理备份文件
  • 执行备份恢复

一、本地安装 MySQL8.0.25

这里使用的是 docker 运行的 创建相关目录

mkdir -pv /data/mysql/ {data,conf}

创建配置文件,可以运行一个 MySQL 容器,从容器中拷贝出来

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL

# Custom config should go here
!includedir /etc/mysql/conf.d/

运行容器

docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -v /etc/localtime:/etc/localtime:ro -v /data/mysql/data:/var/lib/mysql -v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf -p 3306:3306  -d mysql:8.0.25

二、 下载安装 qpress、Percona XtraBackup

  • 安装 qpress
yum install -y qpress
  • 安装 Percona XtraBackup 对于 MySQL 5.7,需要下载及安装 Percona XtraBackup 2.4 及以上版本,MySQL8 需要安装 Percona XtraBackup8,本文使用的是 MySQL8,所以需要下载 Percona XtraBackup8 下载地址
# 上传官网下载的二进制包
tar xf  percona-xtrabackup-8.0.25-17-Linux-x86_64.glibc2.12.tar.gz
cp percona-xtrabackup-8.0.25-17-Linux-x86_64.glibc2.12/bin/* /usr/bin/

三、下载数据库备份物理文件

自行下载不做演示

四、执行备份恢复

#创建存放数据目录
mkdir data

# 将备份文件解包到data目录
xbstream -x -p 4 < 备份文件.qp -C data

# 解压备份文件
xtrabackup --decompress --remove-original --parallel=4 --target-dir=./data/

# 应用日志
xtrabackup --prepare --target-dir=./data/

注意:避免出现版本问题,需要修改解压后的 backup-my.cnf 文件,注释掉自建数据库不支持的参数

# This MySQL options file was generated by innobackupex.

# The MySQL server
[mysqld]
innodb_checksum_algorithm=crc32
innodb_log_checksums=1
innodb_data_file_path=ibdata1:128M:autoextend
innodb_log_file_size=1048576000
innodb_page_size=16384
innodb_undo_directory=./
innodb_undo_tablespaces=2
server_id=2497588870
innodb_log_checksums=ON
innodb_redo_log_encrypt=OFF
innodb_undo_log_encrypt=OFF
server_uuid=d28d00b3-250f-11ed-87d8-fa163e6bd119
master_key_id=0
rds_xa_crash_safe=ON

停止数据库容器,修改 MySQL 数据库配置文件,以及修改 root 账号密码与原数据库密码一致,并将 data 目录与容器内/var/lib/mysql 进行挂载,启动数据库,验证数据恢复

Licensed under CC BY-NC-SA 4.0