跳转到内容

备份策略

没演练过恢复 = 没备份——很多团队定期备份但从未真的恢复过,关键时刻才发现备份根本不能用

经典的备份准则:

  • 3 份备份(原始 + 2 份副本)
  • 2 种存储介质(硬盘 + 云端 / 不同服务器)
  • 1 份异地(不同物理位置)

例子

原始数据:BangNiCMS 服务器
副本 1:同机房另一台服务器(快速恢复)
副本 2:异地云存储(防止机房整体灾难)
数据类型频率
数据库(核心)每天自动备份;高流量站点每小时增量
媒体文件(图片 / 视频)每天增量;每周完整
主题 / 插件 / 模型包改动后立即;每月完整
服务器配置改动后立即
类型内容优势劣势
完整备份所有数据恢复简单占空间大
增量备份仅自上次备份后变化的占空间小、快恢复需要全部增量串起
差异备份自上次完整备份后的变化中庸中庸

典型方案

  • 每周一:完整备份
  • 周二-周日:每天增量备份
  • 恢复 = 周一完整 + 之后所有增量

优势

  • 恢复极快(毫秒级)
  • 无网络成本

劣势

  • 服务器整体灾难时全丢
  • 不防勒索软件

适合:作为第一份副本。

服务适合成本
阿里云 OSS中国大陆¥0.12 / GB / 月
腾讯云 COS中国大陆类似
AWS S3全球$0.023 / GB / 月
Backblaze B2性价比$0.005 / GB / 月(极便宜)

优势

  • 异地、防灾难
  • 自动多副本(云服务商内部)
  • 可控成本

适合

  • 涉及国家秘密 / 行业法规要求
  • 离线副本(应对勒索软件)

实现:每月把云端备份导出到物理磁盘,存到保险箱。

数据类型保留
每日备份30 天
每周备份12 周
每月备份24 个月
年度备份(重要节点)5 年

意义

  • 30 天前发现的问题 → 还有备份能恢复
  • 长期归档应对审计 / 法律要求

备份必须加密——否则备份文件本身就是数据泄漏点。

加密方式

  • 存储时加密(at rest):云服务商默认支持
  • 传输时加密(in transit):HTTPS / SSH
  • 客户端加密:你自己加密后再传(最安全)

密钥管理

  • 密钥不要和备份放一起(同时丢就完蛋)
  • 密钥放密码管理器 / HSM(硬件安全模块)

手动备份不可靠——人会忘 / 会偷懒。必须自动化

典型方案(让运维实现):

每天凌晨 3 点(业务低峰)
脚本触发:
1. 数据库 dump
2. 增量同步媒体目录
3. 加密
4. 上传到云存储
5. 校验完整性
6. 删除超过保留期的旧备份
7. 发邮件 / 钉钉报告"成功"或"失败"

详见 运维 / 开发者文档(建设中)。

自动化≠万事大吉——必须监控

  • 每天看一下”备份成功”通知
  • 备份失败立刻处理
  • 备份文件大小是否正常(突然变小可能内容丢失)
  • 定期抽样恢复验证

红灯

  • 备份失败连续 2 次
  • 备份大小骤减 50%+
  • 7 天没收到备份通知

最重要的一步——很多团队从未真的恢复过备份。

每季度做一次

  1. 创建测试环境(不影响生产)

  2. 从备份恢复到测试环境

  3. 验证

    • 内容完整?
    • 翻译完整?
    • 用户能登录?
    • 媒体文件存在?
    • 站点设置正确?
  4. 记录恢复过程:

    • 多久能恢复(RTO 目标 < 4h)
    • 数据丢失多少(RPO 目标 < 1h)
  5. 改进:发现的问题立刻修

两个关键指标:

  • RTO(Recovery Time Objective):从灾难发生到完全恢复的最长时间
  • RPO(Recovery Point Objective):能接受的最大数据丢失

典型目标

业务类型RTORPO
个人博客24h24h
中小 B2B4h1h
大型电商30 分钟5 分钟
金融 / 医疗5 分钟0(零丢失)

让运维根据业务配相应方案——RPO 越小成本越高。

勒索软件可能加密所有数据包括备份:

防御

  • 备份不写入 = 攻击者改不了
  • 离线备份(物理磁盘 + 保险箱)
  • 多重身份验证访问备份
  • 只追加云存储(appendonly)

中型站点(500 篇内容、10 GB 媒体):

  • 数据库:约 100-500 MB / 备份
  • 媒体:增量约 100 MB / 天

全年成本(云存储):

  • 数据库 / 配置:~10 GB → ¥15-50 / 年
  • 媒体:~50 GB → ¥75-300 / 年

完全可控。

我能让运维不知道密钥但能恢复吗?

Section titled “我能让运维不知道密钥但能恢复吗?”

可以——通过多人共管密钥:

  • Shamir Secret Sharing:把密钥拆成 5 份,3 份能恢复
  • 多人各持一份
  • 紧急时多人同时授权

适合高安全场景(金融、政府)。

典型数据库(500 MB):5-30 分钟

含媒体(10 GB):1-4 小时

完整灾难恢复(裸机):4-12 小时

可以通过热备(standby)服务器降到秒级——但成本翻倍。

取决于备份方式

最佳实践:误删单条 → 看操作日志找操作前数据 → 手工录回。

如果所有备份都丢失:

  • 看 SaaS 服务商(云存储、托管平台)是否有”地球级”备份
  • 联系搜索引擎缓存(Google、百度可能存了一份)
  • 接受损失,从零开始

预防:3-2-1 原则就是为了避免这个。