
1) 【一句话结论】采用“两地双活+实时同步+自动化切换”架构,通过事务日志与多副本机制保障数据一致性,实现7x24稳定运行与极低数据丢失率。
2) 【原理/概念讲解】
设计容灾方案要围绕“主备部署、数据同步、故障切换、数据不丢失”四要素展开。
3) 【对比与适用场景】
| 方案类型 | 定义 | 核心特性 | 适用场景 | 注意点 |
|---|---|---|---|---|
| 双活容灾 | 多节点互为主备,全局负载均衡 | 多节点同时处理读写,故障时自动切换,无单点 | 高并发、7x24业务(如就业平台) | 需统一数据一致性协议,成本较高 |
| 主从容灾 | 单主多备架构,主库读写、备库只读 | 主库故障时手动/自动切换,备库无读写压力 | 传统业务,对RTO要求不高 | 备库需定期同步,切换时数据延迟 |
| 云原生容灾(如AWS RDS Multi-AZ) | 云服务商跨可用区部署 | 自动故障切换,数据自动同步 | 云环境下的数据库服务 | 依赖云服务商,定制化能力有限 |
4) 【示例】
# 主库写操作
def write_resume(resume_data):
main_db.insert(resume_data) # 写入主库
kafka_producer.send('sync_topic', resume_data) # 发送同步消息
# 备库消费同步消息
def consume_sync():
for msg in kafka_consumer:
main_db.insert(msg.data) # 同步到备库
def monitor_health():
if main_db.is_unreachable(): # 主库故障
load_balancer.set_target('backup_db') # 切换负载均衡指向备库
5) 【面试口播版答案】
“面试官您好,针对就业信息平台的7x24容灾需求,我设计的方案核心是‘两地双活+实时同步+自动化切换’,通过事务日志与多副本保障数据一致性,实现稳定运行与极低数据丢失率。首先,主备部署采用南京主中心+上海备中心的双活架构,两地节点同时处理读写请求。数据同步采用MySQL binlog+Kafka异步复制,主库写操作通过binlog记录,同步节点将binlog推送到Kafka,备库消费消息实时更新数据,延迟控制在秒级。故障切换通过健康检查自动触发,切换时负载均衡器快速切换到备库,切换时间控制在3分钟内(RTO<3分钟),数据通过binlog回滚保证RPO<1秒。数据不丢失依赖事务ACID、binlog持久化存储和多副本同步,即使主库故障,备库也能基于最新日志恢复数据,确保数据丢失率极低。”
6) 【追问清单】
7) 【常见坑/雷区】