首页/数据/数据库速查/备份文件加密(gpg/openssl/xtrabackup)
备份与恢复56 条

备份文件加密(gpg/openssl/xtrabackup)

备份携带全量数据,落盘即加密:mysqldump 管道 gpg 对称加密、openssl enc 通用方案、xtrabackup 原生 AES;密钥独立管理。

数据库速查数据更新于 2026-10-13

备份加密是什么

备份文件里是全量数据,落盘后如果只做权限保护,一旦介质或对象存储被访问就等于泄露。常见做法有三类:备份管道接 gpg 对称加密、用 openssl enc 做通用对称加密、或使用 XtraBackup 的原生加密参数。无论哪种,密钥都必须独立于备份存放,并且要有轮换与解密演练——密钥丢失或忘记,加密备份就彻底变成不可恢复的字节。

基本信息

gpg 对称加密gpg --symmetric --cipher-algo AES256 --batch --passphrase-file
openssl 方案openssl enc -aes-256-cbc -salt -pass file:路径
XtraBackup备份参数中提供原生加密选项,按版本文档配置
顺序先压缩再加密,减少加密的数据量
密钥管理独立存储、权限收敛、定期轮换与解密演练

典型使用场景

  • 异地归档:备份上传到对象存储前先加密,介质层面的访问不再直接暴露数据
  • 合规要求:规范明确要求备份加密存放时按标准方案落地
  • 介质流转:备份磁带或硬盘需要交给第三方保管时,加密是前提
  • 混合云迁移:跨云搬运备份文件时避免明文落盘
  • 分级保护:核心业务库的备份采用更高强度加密与更短轮换周期

管道加密与解密

管道加密与解密
# 备份管道:mysqldump -> gzip -> gpg 对称加密
mysqldump -uroot -p --single-transaction --all-databases \
  | gzip -6 \
  | gpg --symmetric --cipher-algo AES256 --batch \
        --passphrase-file /etc/backup/pass.txt \
  > /data/backup/all_$(date +%F).sql.gz.gpg
# 解密恢复链路:gpg 解密 -> 解压 -> 导入
# 先把口令文件权限设为 600,且不要与备份放在同一目录
ls -l /etc/backup/pass.txt

方案对比

方案优点代价
gpg 对称加密成熟、支持密钥文件、可与管道组合需要额外进程,注意口令文件权限
openssl enc系统普遍自带,参数简单老算法组合需谨慎选择,易配错
XtraBackup 原生加密备份与加密一步完成参数随版本变化,需按文档配置
不加密只靠权限零额外开销介质或存储被访问即全量泄露
加密顺序影响性能:先压缩再加密(管道中压缩在前),加密的数据量更小。若使用支持硬件加速的环境,AES 的额外开销通常可以接受。
密钥必须与备份物理分离存放:把口令文件放在同一个备份目录里,等于没加密。密钥轮换时还要保留旧密钥的解密能力,否则历史备份将无法打开。

易错点

  • 密钥与备份放同一目录或同一台机器:拿到备份即可解密,加密形同虚设
  • 轮换密钥后没有保留旧密钥:历史备份再也解不开,属于数据永久丢失级别的事故
  • 从没做过解密演练:真到恢复时才发现口令文件丢失或口令记错,加密备份全部作废
  • 口令写在明文的定时任务脚本或历史命令里:任何人能看到进程列表或日志即可获取密钥
  • 只加密部分备份:归档加密了但本地保留明文副本,泄露面依旧存在,策略要覆盖全部副本

数据来源与参考

  • GnuPG 手册: gpg --symmetric
  • Percona XtraBackup 文档: 加密

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌