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