
1) 【一句话结论】采用多区域异步增量备份+WAL重放+三地备份中心互备架构,结合自动化容灾流程,实现每小时备份,RPO≤5分钟(WAL重放时间≤5分钟),RTO≤30分钟,保障数据一致性。
2) 【原理/概念讲解】
面试官会关注RTO(故障后恢复时间)、RPO(最大允许数据丢失量)及跨区域备份的一致性。
3) 【对比与适用场景】
| 备份策略 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 全量备份 | 每次备份整个数据集 | 体积大,恢复快 | 初始备份,数据量小 | 频率低,占用存储 |
| 增量备份 | 备份自上次备份以来新增数据 | 体积小,效率高 | 数据量大,频繁备份 | 需合并历史数据 |
| 日志备份(WAL) | 备份事务日志,按时间顺序 | 实时性高,RPO低 | 对数据一致性要求高的场景 | 需重放日志恢复 |
4) 【示例】
伪代码展示跨区域增量备份与容灾切换流程:
def hourly_backup():
# 1. 拉取增量日志(按时间戳排序)
logs = []
logs.extend(fetch_incremental_logs('beijing', start_time, end_time))
logs.extend(fetch_incremental_logs('shanghai', start_time, end_time))
logs.extend(fetch_incremental_logs('guangzhou', start_time, end_time))
# 2. 合并日志生成备份包
backup_package = merge_logs(logs)
# 3. 传输至备份中心(多区域复制)
upload_to_backup_center(backup_package, 'backup')
# 4. 验证备份完整性(校验和、时间戳)
verify_backup(backup_package)
# 5. WAL重放(确保数据持久化)
replay_wal(backup_package) # 技术实现:日志压缩+并行重放,时间≤5分钟
def disaster_recovery():
# 故障检测(心跳超时)
if check_backup_center_health() == 'failed':
# 自动化切换(优先级:本地→异地)
switch_to_backup_center('secondary')
# 数据一致性验证(校验和、时间戳校验)
validate_data_consistency()
# 恢复业务(如日志重放)
restore_logs()
5) 【面试口播版答案】
面试官您好,针对360安全产品的日志跨区域备份需求,我设计的方案核心是“多区域异步增量备份+WAL重放+三地备份中心互备”。具体来说,每小时通过定时任务触发,从北京、上海、广州三地存储节点拉取增量日志(按时间戳排序),合并生成备份包,通过对象存储跨地域复制到备份中心。为保障数据一致性,采用WAL,备份时读取WAL并重放(技术实现:日志压缩+并行重放,时间≤5分钟),确保未完成写入的日志已持久化。容灾切换时,备份中心多副本,自动化脚本监控故障(如心跳超时),自动切换(优先级:本地备份中心→异地备份中心),RTO控制在30分钟内。架构上,各区域节点同步写入WAL,备份节点定时拉取,备份中心互为副本,既满足跨区域备份、低RPO/RTO,又保证数据一致性。
6) 【追问清单】
7) 【常见坑/雷区】