跳到主要内容

高可用、备份、RTO 与 RPO

高可用减少日常故障造成的中断,备份保留可恢复的数据副本,RTO 和 RPO 则规定灾难发生后需要恢复到什么程度。

1. 高可用覆盖常见故障

高可用系统通过冗余和故障转移应对可预期的组件故障,例如进程退出、主机损坏或单个可用区失效。设计时先列出故障域:

  • 进程和主机;
  • 机架与电源;
  • 可用区和地域;
  • 网络、DNS 与证书;
  • 数据库、消息系统和外部供应商;
  • 错误配置与软件发布。

同一机房部署两个实例只能覆盖部分进程和主机故障。两个实例共享数据库、交换机或错误配置时,仍然存在共同故障点。

2. 冗余需要可工作的接管路径

增加副本只是第一步。系统还需要健康判断、流量切换、状态同步和容量余量。接管路径要回答:

  • 谁判断主节点不可用;
  • 如何避免两个主节点同时写入;
  • 备用节点的数据落后多少;
  • 故障后剩余容量能否承接峰值;
  • 客户端、连接池和 DNS 多久感知切换。

自动切换适合检测准确、动作可逆且频繁出现的故障。涉及数据丢失风险或跨地域切换时,可以保留人工确认,但操作必须有经过演练的 runbook。

3. 备份应对复制无法解决的问题

复制会把删除、错误更新和加密破坏迅速传播到副本。备份保存独立时间点的数据,用于恢复逻辑损坏、勒索攻击和长时间未发现的数据错误。

备份策略要规定:

  • 全量、增量或日志备份的频率;
  • 保存期限与版本数量;
  • 是否跨账号、跨地域或离线保存;
  • 加密、密钥和访问审计;
  • 完整性校验和恢复测试;
  • 数据库之外的配置、对象存储和密钥材料。

备份任务显示成功,只能证明文件被写出。只有在隔离环境中完成恢复并校验业务数据,才能证明备份可用。

4. RPO 限制可接受的数据丢失

RPO(Recovery Point Objective)描述灾难后可以接受恢复到多早的数据点。RPO 为 15 分钟,意味着业务最多接受约 15 分钟的数据变化丢失。

RPO 会影响复制和备份方案:

  • 每日备份无法满足分钟级 RPO;
  • 异步跨地域复制的实际 RPO 取决于复制延迟;
  • 同步复制可以降低 RPO,但会增加写延迟和跨地域故障耦合;
  • 业务日志、消息和外部流水可能用于灾后补录。

不同数据可以使用不同 RPO。支付账务可能接近零,推荐缓存可以接受重新生成。

5. RTO 限制恢复时间

RTO(Recovery Time Objective)描述从故障发生到业务恢复到约定水平的最长时间。它包括发现、决策、基础设施准备、数据恢复、应用启动、验证和流量切换。

RTO 越短,通常需要越多预置资源和自动化:

  • 备份恢复:成本较低,恢复时间较长;
  • 最小运行环境:保留关键数据与核心组件,灾难时扩容;
  • 温备:异地持续运行缩小版环境;
  • 多站点运行:两地同时承载或随时接管,成本和一致性要求最高。

选择方案时应从业务 RTO/RPO 反推,避免先购买双活架构,再寻找使用理由。

6. 恢复顺序来自依赖图

完整恢复不只启动应用。通常需要按顺序处理:

  1. 身份、网络、DNS、证书和密钥;
  2. 数据库、对象存储、消息系统和配置中心;
  3. 核心写入服务;
  4. 查询、搜索和异步消费者;
  5. 非核心后台任务与报表。

每一步都要定义可验证的完成条件。数据库能连接不代表数据一致;服务健康检查通过不代表用户能完成支付。恢复验证应包含业务探针、数据校验和外部依赖检查。

7. 用演练测量真实目标

恢复演练要记录实际恢复点和恢复时间,并与 RPO/RTO 比较。演练至少覆盖:

  • 从指定备份恢复到空环境;
  • 主区域不可用时切换;
  • 密钥、权限或镜像缺失;
  • 数据复制落后或损坏;
  • 回到正常拓扑的 failback。

演练发现的缺口需要负责人、优先级和复测日期。业务增长、依赖和人员变化后,旧演练结果不能继续代表当前能力。

8. 常见问题

8.1 主从复制是否可以代替备份

不能。复制提高副本可用性,也会复制误删除和逻辑损坏。备份提供独立历史恢复点,两者覆盖的风险不同。

8.2 双机部署是否已经满足容灾

要看两个实例是否跨越目标灾难的故障域,以及数据、网络、配置和接管路径是否独立。部署在同一区域、共享同一数据库的双机,无法覆盖区域灾难。

9. 面试题

9.1 高可用与容灾有什么区别,怎样根据 RTO/RPO 设计方案

出现公司:阿里巴巴

考察重点

  • 冗余、故障域、备份和灾难恢复的范围。
  • RTO、RPO 对复制、备份和预置资源的约束。
  • 恢复顺序、业务验证和定期演练。

相关内容:第 1 节“高可用覆盖常见故障”至第 7 节“用演练测量真实目标”。

参考回答

高可用主要通过同一服务范围内的冗余、健康检查和故障转移降低日常中断;容灾覆盖区域级故障、数据损坏等严重事件,需要独立恢复环境、数据副本和业务恢复流程。备份用于保留历史恢复点,主从复制不能代替它。

我会先按业务数据和功能确定 RPO 与 RTO,再选择备份恢复、最小运行环境、温备或多站点方案。设计要覆盖共同故障点、接管容量、复制延迟、DNS 和依赖恢复顺序。最后通过从空环境恢复、区域切换和 failback 演练测量真实 RPO/RTO,并用业务探针和数据对账确认恢复有效。