Skip to content

容灾与多活

同城双活/异地多活、RPO/RTO、备份恢复、故障演练。

Updated View as Markdown
For humans

容灾与多活

校招考察频度:☆ 中频(原理扩展·工程加分项)

单机房故障(断电、光纤被挖)是真实风险。容灾设计的目标:机房级别故障下,数据不丢、服务可用。面试主线:容灾层级、双活架构、备份与演练。

容灾层级

层级架构切换时间成本
同城双活两个机房同城互备,同时服务分钟级中
异地多活多地域机房同时服务分钟级高
异地冷备异地机房备份,不服务小时级(拉起)低
  • 同城双活:两个机房距离近(光纤直连),数据库同步复制,流量均分。防机房故障,防不了地域灾难
  • 异地多活:跨地域,防地域灾难(地震、大面积断网)。代价:跨地域同步延迟大,架构复杂度高
  • 选型:核心业务同城双活起步,重要数据异地备份

RPO 与 RTO

指标含义容灾目标
RPO可容忍的数据丢失量(时间)越小越好,同步复制 RPO=0
RTO服务恢复时间越小越好,双活分钟级
  • 同城双活:RPO≈0(同步复制)、RTO 分钟级
  • 异步复制到异地:RPO 秒到分级(丢最近写入)
  • 面试话术:RPO 决定丢多少数据,RTO 决定停多久服务,两者由复制模式和切换机制决定(见冗余与故障转移篇)

备份恢复

备份是容灾的兜底(双活挂了还有备份):

方式内容恢复
全量备份定期全量快照恢复慢,丢备份周期内数据
增量/WAL 归档全量 + 持续日志PITR 恢复到任意时间点(见数据库 WAL 篇)
异地备份备份副本放异地防本地灾难

要点:备份要验证可恢复(定期演练恢复流程),备份要异地(同机房备份随机房一起挂)。只备份不验证等于没备份。

故障演练

  • 混沌工程:主动注入故障(杀节点、断网络、延迟),验证系统自愈能力
  • 演练内容:单实例故障、机房故障、依赖故障(Redis/DB 挂)、流量突增
  • 演练产出:发现预案漏洞、验证监控告警、训练运维响应
  • 原则:从低风险开始(先演练非核心、低流量时段),逐步扩大

面试追问

  1. 同城双活和异地多活? 双活同城互备防机房故障(同步复制 RPO≈0);多活跨地域防地域灾难(延迟大、复杂)。按风险选
  2. RPO 和 RTO 怎么权衡? RPO 是丢多少,RTO 是停多久。同步复制 RPO=0 但延迟高;异步低延迟但可能丢数据
  3. 备份为什么必须演练? 备份不可恢复等于没有。定期验证恢复流程,备份放异地
  4. 多活的难点? 数据同步延迟、冲突处理、流量调度。数据库是最大的难点(跨地域同步)
  5. 故障演练的价值? 验证预案和自愈能力。从低风险开始,逐步扩大范围
Navigation

Type to search…

↑↓ navigate↵ selectEsc close