数据同步

容灾系统最难的部分往往不是服务部署,而是数据同步。服务可以快速拉起,但如果备用机房没有最新数据,切过去也无法提供正确业务。

数据分类

不同数据同步策略不同:

数据类型示例同步要求
强业务数据订单、支付、账户余额RPO 小,严格校验
可重建数据搜索索引、推荐缓存可异步重建
临时数据Session、验证码、限流计数可丢弃或降级
文件数据图片、合同、附件对象存储跨区域复制
消息数据MQ 未消费消息要处理重复和丢失

所有数据都按最高标准同步,成本会非常高。先分类,才能设计合理策略。

数据库同步

数据库常见同步方式:

  • 主从复制:实现成熟,但跨地域延迟和复制中断要监控。
  • 双向复制:支持多地写入,但冲突处理复杂。
  • 逻辑日志同步:通过 binlog 或 CDC 把变更推到备用地域。
  • 应用层双写:业务可控,但容易出现部分失败和一致性问题。

对核心交易系统,通常先采用单主写入 + 异地只读或热备,等业务具备分区能力后再考虑多活写入。

缓存同步

缓存不一定要强同步。很多缓存可以在切换后回源重建。真正需要关注的是:

  • 缓存是否承载会话或关键状态。
  • 缓存丢失后数据库是否能承受回源压力。
  • 备用机房是否需要提前预热热点数据。

如果缓存不可用会导致雪崩,容灾预案里要包含限流、降级和预热。

消息同步

消息系统在容灾中容易出问题。切换时可能出现:

  • 消息在主机房已写入但未同步。
  • 备用机房重复消费。
  • 消费进度不一致。

解决思路是让消费端具备幂等能力,并保存业务侧处理状态。容灾切换后,即使消息重复投递,也不能导致重复扣款、重复发货或重复通知。

同步监控

数据同步必须可观测:

  • 主备延迟。
  • 复制中断时间。
  • 待同步日志量。
  • 校验差异数量。
  • 最近一次成功同步时间。

没有这些指标,团队无法判断是否能安全切换。下一章会讨论故障转移,数据同步状态会成为切换决策的重要依据。