XtraBackup 压缩与加密是什么
Percona XtraBackup 做物理热备,直接拷贝 InnoDB 数据文件,恢复速度快、对大库友好。备份产物往往几百 GB,压缩能省下大半磁盘;涉及用户隐私或支付数据的库,还要在备份阶段就加密,避免备份文件成为安全短板。压缩与加密都是备份参数,恢复前必须分别做解压与解密,两步顺序不能颠倒。
基本信息
| 适用版本 | XtraBackup 8.0 对应 MySQL 8.0,2.4 对应 5.7(版本必须对应) |
|---|---|
| 压缩参数 | --compress、--compress-threads=N 并行压缩 |
| 解压参数 | --decompress、--parallel=N |
| 加密参数 | --encrypt=AES256 --encrypt-key-file=密钥文件 |
| 解密参数 | --decrypt=AES256 --encrypt-key-file=密钥文件 |
| 依赖工具 | 老版本压缩产物解压需要 qpress 命令 |
典型使用场景
- 大库全备后落对象存储:压缩后上传,成本与耗时都明显下降
- 合规要求备份加密:含个人信息、支付信息的库必须加密存放
- 跨机房搬运备份:加密后经公网传输,降低泄露风险
- 为升级做回退保障:升级前留一份物理全备,回退最快
- 本地盘空间紧张:压缩后先在本地暂存,再传到备份服务器
压缩备份与解压
压缩备份与解压
# 压缩备份(默认 qpress 算法),压缩线程单独控制
xtrabackup --backup --user=backup --password='***' \
--target-dir=/data/backup/full_c --compress --compress-threads=4
# 恢复前先解压到同目录,再执行 --prepare
xtrabackup --decompress --target-dir=/data/backup/full_c --parallel=4
xtrabackup --prepare --target-dir=/data/backup/full_c加密备份与解密
加密备份与解密
# 密钥文件权限收紧到 600,并单独保管
xtrabackup --backup --user=backup --password='***' \
--target-dir=/data/backup/full_e --encrypt=AES256 \
--encrypt-key-file=/etc/mysql/backup.key
# 解密:加密与解密使用同一密钥文件
xtrabackup --decrypt=AES256 --encrypt-key-file=/etc/mysql/backup.key \
--target-dir=/data/backup/full_e --parallel=4
# 解压与解密都会保留原文件,确认无误后再清理
ls -lh /data/backup/full_e | head压缩与加密要点
| 项 | 做法 | 注意 |
|---|---|---|
| 压缩 | --compress + --compress-threads | 吃 CPU,与业务高负载叠加时备份窗口会拉长 |
| 解压 | --decompress --parallel | 必须先解压才能 --prepare;老版本依赖 qpress 命令 |
| 加密 | --encrypt=AES256 + 密钥文件 | 密钥与备份分机存放,权限 600 |
| 解密 | --decrypt + 同一密钥文件 | 密钥丢失等于备份永久不可用 |
| 清理 | 解密解压后删除中间文件 | 残留明文文件会让加密形同虚设 |
密钥文件必须与备份分机存放并纳入密码管理体系:密钥和备份放在同一台机器、同一份目录备份里,等于没有加密。解密解压产生的中间明文文件在使用后要及时清理。
恢复流程固定为三步:解压、解密(或先解密再解压,视生成参数定)、--prepare 应用日志,然后才能拷贝数据目录启动;跳过 --prepare 直接启动会得到不一致的数据。