MENU

腾讯云数据库xb备份文件还原MySQL实例

February 1, 2023 • Read: 2404 • 随心笔记

前言

腾讯云数据库(MYSQL)的备份文件都是xb后缀文件,该文件无法直接提取内部数据,所以一般我们都需要对该文件进行解压还原之后,才能二次操作;但是这个还原流程却“并不简单”很容易出错,踩过两次坑,为此做个笔记以便后续查阅。

为节约存储空间,云数据库 MySQL 的物理备份和逻辑备份文件,都会先经过 qpress 压缩,后经过 xbstream 打包(xbstream 为 Percona 的一种打包/解包工具)进行压缩与打包。

操作环境:debian11 + aapanel + mysql5.7,干净纯净的系统,安装了宝塔海外版本(aapanel),再使用面板安装的MySQL5.7;这个环境只是临时搭建,一般我还原成功之后就删掉。

还原教程

Ps:全程root权限操作执行

# 1.安装相关软件  
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
apt update
apt install percona-xtrabackup-24 qpress -y  

# 2.把自己的xb文件上传到 /root 目录,重命名为 backup.xb

# 3.创建一个临时目录
mkdir /root/data 

# 4.解包文件 (无任何输出,/root/data/ 目录出现 qb 文件则成功)
xbstream -x -C /root/data/ < /root/backup.xb

# 5.解压备份文件 (最后一行出现 completed OK! 则成功 ) 
xtrabackup --decompress --target-dir=/root/data --remove-original

# 6.Prepare 备份文件(最后一行出现 completed OK! 则成功)
xtrabackup --prepare  --target-dir=/root/data

# 7.修改配置文件,将配置里下面这些字段全部注释掉(行首加#)然后保存退出。
# innodb_checksum_algorithm 
# innodb_log_checksum_algorithm 
# innodb_fast_checksum 
# innodb_page_size 
# innodb_log_block_size 
# redo_log_version 
# server_uuid
# master_key_id
vi /root/backup-my.cnf 

# 8.关闭面部自带的 MySql 实例进程。
systemctl stop mysqld

# 9.启动还原的MySql实例进程
#如果显示 mysqld_safe Starting mysqld daemon with databases from ... 等信息,则代表进程启动成功
#如果看到ended等字符说明启动失败,请跟踪 /var/log/syslog 查看具体的错误信息再进行排错。
mysqld_safe --defaults-file=/root/data/backup-my.cnf --user=root --datadir=/root/data --syslog &

至此,还原的MySQL实例已经启动成功,后续你就可以通过 mysql mysqldump等命令操作或者导出sql.gz的备份文件,而启动的MySql实例 root 密码就是原来你在腾讯云数据库的root密码。

比如,我要导出实例里面 qzone_work 这个库的结构+数据,则执行命令:

mysqldump -uroot -p --databases qzone_work --default-character-set=utf8mb4 | gzip  > ./qzone_work.sql.gz

就得到了一个压缩过的SQL文件:qzone_work.sql.gz

参考