CRDB 区域故障中的一致性与数据丢失考量

最后更新时间:2024年4月18日

问题

在区域中断中可能会丢失多少数据?使用 Active-Active 地理分布式数据库还可能出现哪些一致性问题?

术语

关键路径。在项目管理中,关键路径是完成项目所需的最长任务序列。DR。灾难恢复 (DR) 是组织应对并从对业务运营产生负面影响的事件中恢复的能力。RTO。恢复时间目标 (RTO) 是灾难发生后恢复业务运营或资源再次可用的时间长度。

回答

假设 CRDB 副本中的主分片和副本分片之间复制没有数据丢失,那么问题不在于数据丢失,而在于数据一致性,因为在故障发生前提交的一些更改可能尚未同步到其他 CRDB 副本。由于最终会同步,因此这并非数据丢失的问题。

如果 CRDB 副本上未启用 AOF 持久化,那么未复制到其他 CRDB 副本的更改将在副本发生中断时丢失:恢复将从最新备份以及从其他 CRDB 副本同步的更改执行。在这种情况下,丢失的数据量取决于网络延迟和复制速度,以及数据大小(可能还有数据类型),以便估算可能丢失多少数据。

此外,需要注意的是,即使启用了 AOF 持久化,也可能发生数据丢失。

  • 在 CRDB 副本中,持久化由副本分片执行(默认配置),并且对副本分片的复制是异步的,因此命令执行与数据安全地存储到磁盘之间存在延迟。
  • Append Only File (AOF),通常配置为每秒执行一次 *fsync* 到磁盘,这会进一步增加一秒的数据丢失窗口。

使用 CRDB 进行 DR 的客户应监控集群之间的复制延迟,并进行压力测试以了解预期峰值负载下的延迟。可以说,切换到 DR 位置时数据不会丢失,但如果主位置长时间中断,对于某些应用来说,原始位置中未复制的数据实际上等同于丢失。区域之间的延迟可能在秒级别(1秒、2秒等)。对于购物车应用,这意味着最后添加到购物车的几件商品可能会丢失。

恢复目标

用户设定恢复目标,这些目标通常是比单个缓存/数据库更大范围的一部分。在会话缓存可在 5 分钟内恢复而事务性记录系统 (SOR) 需要 2 小时恢复的场景中,会话缓存的 RTO 将无关紧要。只有当它属于关键路径的一部分时才重要。CRDB 数据库可用于将数据复制到 DR 站点,但应用故障转移到 DR CRDB 副本所需的时间主要取决于客户。应将 CRDB 视为对业务连续性而非 DR 的支持。业界已逐渐认识到这些术语之间的差异,但通常仍将所有情况都称为 DR。这并不完全正确,因为 CRDB 部署可以完全避免恢复过程。

参考资料

请参阅本文中的“**高可用性与灾难恢复**”部分。