
点击蓝字,关注我们
前言:备份文件生成及恢复原理
1. 数据库备份文件的架构
物理备份文件(_qp.xb)采用 XtraBackup + QuickLZ + xbstream 的技术栈,其备份流程如下:
数据备份:XtraBackup 对 InnoDB 表空间执行热备份,生成流式数据;
压缩优化:使用 qpress(基于QuickLZ 算法)对数据进行压缩,压缩比约 1:3-5,显著减少存储体积;
流式封装:通过xbstream工具将压缩后的数据封装为流式文件(_qp.xb),支持分块存储和传输。

2. 恢复流程的逆操作逻辑
由于备份过程是 压缩至流式打包,恢复时必须严格遵循解包至解压的逆序:
解包(xbstream -x):解析流式文件结构,提取压缩数据块(.qp 文件);
解压(xtrabackup --decompress):使用XtraBackup内置工具或qpress解压QuickLZ压缩的数据,恢复原始.ibd 表空间文件。
├── 生成原理│ ├── 触发方式:手动/自动│ ├── 数据捕获:全量/增量(LSN)│ ├── 处理:压缩(QuickLZ/Zstandard) + 加密(AES-256)│ └── 存储:OSS + 校验文件(.meta)└── 恢复原理├── 下载备份文件├── 解包(xbstream -X)├── 解压(xtrabackup --decompress)├── 数据还原(copy-back)└── 重启服务 (验证)
操作:数据库备份文件重构步骤
环境配置与软件安装
1. 下载与安装Percona XtraBackup工具:
1)访问官方下载中心:Percona 官网下载页面:https://www.percona.com/downloads,在Software Downloads页面选择Percona XtraBackup,根据MySQL主版本选择对应下载的XtraBackup;

重要提示

必须确保XtraBackup版本与MySQL数据库版本严格匹配:Percona XtraBackup 8.0 只支持MySQL 8.0的版本,Percona XtraBackup 2.4 支持MySQL 5.11 , 5.5, 5.6 和5.7的版本
若版本不匹配,将导致解压失败或数据损坏!
2)下载匹配的XtraBackup:复制上述版本下载链接,然后通过wget命令进行下载;
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/tarball/percona-xtrabackup-2.4.29-Linux-x86_64.glibc2.17.tar.gz

3) 进行XtraBackup工具安装:
通过tar -xvf命令解压下载的安装包文件,默认解压到当前目录;
tar -xvf percona-xtrabackup-2.4.29-Linux-x86_64.glibc2.17.tar.gz#参数说明#-x 解压(eXtract)#-v 显示解压过程(文件列表)#-f 指定压缩包路径(必须紧跟文件名)

切换工作目录到XtraBackup安装包目录,复制旧版备份脚本到系统全局路径,复制 XtraBackup 主程序及依赖工具到系统路径,查看版本信息;
cd percona-xtrabackup-2.4.29-Linux-x86_64.glibc2.17cp bin/innobackupex usr/bincp bin/xtrabackup* usr/bin

2. 下载与安装qpress工具
1) 下载:从项目地址https://gitcode.com/open-source-toolkit/a139f 下载qpress-11-1.el7.x86_64.rpm文件(下载本地在进行上传服务器);
2) 安装:使用命令sudo rpm -ivh qpress-11-1.el7.x86_64.rpm进行安装,安装完成后即可使用。
sudo rpm -ivh qpress-11-1.el7.x86_64.rpm

备注:CentOS和MySQ基础环境安装略过
备份文件解包解压
1. 上传阿里云数据库备份文件:通过WinSCP或FinalShell等工具将备份数据库文件(*****_qp.xb)上传至服务器home路径下;

2. 解包.xb数据库备份文件:通过xbstream -x命令解包备份文件至home路径的data目录下;(因为备份文件已经下载上传至服务器,本文解压采用的是文件重定向的输入方式,即xbstream -x -C dir < file.xb,直接读取文件)
xbstream -x -C home/data < hins35416560_data_20250331205415_qp.xb#参数说明#-x 解压#-C 指定目录#< 输入文件

3. 解压.qb文件数据库文件:通过 xtrabackup --decompress命令解压.xb文件解压出来的.qp文件;
xtrabackup --decompress --remove-original --target-dir=/home/data


4. 确认核对版本是否匹配:经过解包解压后,已经可以恢复原始的数据库文件结构,可以通过解压后的“xtrabackup_info”文件查看数据库及xtrabackup的版本信息。


数据库本地还原重构
1. 下载备份文件:将解压完成后数据data文件从服务器下载到本地C盘根目录(路径自定义);
2. 停止数据库服务:通过net stop mysql停止MySQL服务,需要确认本机mysql服务具体名称;

备注:命令提示符需要以管理员身份运行,也可在任务管理器中找到对应mysql服务进行手动停止
3.修改配置文件:编辑 my.ini 修改 datadir,将路径指向xb解压目录:C:\data(路径配置时Windows 推荐用正斜杠,避免转义问题 );

4. 绕过数据库登录权限访问数据库:编辑 my.ini 添加 skip-grant-tables,找到 [mysqld] 段落,在任意位置新增(注意缩进一致),登录 MySQL 并检查数据是否完整,完成阿里云PolarDB数据库备份文件重构;
[mysqld]skip-grant-tables # 新增行,禁用权限验证

注意事项
软件版本兼容:确保XtraBackup工具版本与MySQL数据库版本匹配,备份数据库版本与本地重建环境MySQL数据库版本匹配;
解压空间问题:备份文件解压后体积约为原数据的1.5倍,需预留足够磁盘空间(建议 2 倍以上)
删除冗余日志:还原后若ib_logfile过大,可通过innpdb_log_file_size参数调整(需重启 MySQL)
以上是通过在 Linux 环境安装XtraBackup等工具完成备份解包解压,再通过 Windows 部署 MySQL 实现数据重建操作的相关指引,倘若内容有误、有所遗漏,抑或存在优化空间,期待您能提出宝贵意见 。
END




