文档首页> 技术教程> 备份文件的加密与异地存放

备份文件的加密与异地存放

发布时间:2026-07-10 21:19        更新时间:2026-07-11 05:28
备份文件和数据库放在同一台机器、同一个机房,等于没做异地容灾:磁盘损坏、误删、勒索加密,任何一种都能把备份和原库一起带走。加密加异地,两个动作成本都不高,按下面的步骤走。 第一步:导出并压缩 mysqldump -uroot -p --single-transaction --databases appdb | gzip > /backup/appdb_$(date +%F).sql.gz --single-transaction 让 InnoDB 表在不阻塞写入的情况下取一致性快照。文件名带日期,方便按保留策略自动清理。只备一个库用 --databases 指名,全实例备份就去掉库名参数;库多时按业务拆开备份,恢复时更灵活。 第二步:加密 一行 openssl 完成对称加密: openssl enc -aes-256-cbc -salt -pbkdf2 -in appdb_2026-10-08.sql.gz -out appdb_2026-10-08.sql.gz.enc -k 强口令 解密时加 -d 反向执行。口令不要明文写进 crontab,用环境变量或独立的口令文件(权限设 600)传入。原始未加密文件在确认加密可用后立刻删除,别留明文副本。 第三步:传异地 把加密文件传到另一台不同机房的服务器,或经对象存储中转落到低频存储: curl -T appdb_2026-10-08.sql.gz.enc https://对象存储地址/backup/mysql/ 备份存放地和数据库至少跨机房,避免一损俱损。传输走 HTTPS 或 rsync over ssh,明文 FTP 不要用。传完校验一下:先比本地和远端文件大小,讲究点的再核一次哈希值。 第四步:密钥分开保管 加密口令和备份文件必须分开存放:口令进团队密码管理器,绝不放在备份服务器上,更不能跟着备份一起传进同一个存储桶。丢了口令的备份就是一块砖,这条要写进运维文档并让每个人知道。 第五步:定期演练恢复 每季度抽一份备份做完整恢复演练:解密、导入临时实例、核对关键表行数和核心业务数据。演练时把找口令、解密、导入的完整流程走通,哪一环卡住就修哪一环。备份的价值只在恢复成功的那一刻成立——没演练过的备份,不能算备份。