灾难恢复和 Amazon DocumentDB 全局集群 - Amazon DocumentDB

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

灾难恢复和 Amazon DocumentDB 全局集群

通过使用全局集群,您可以快速从区域故障等灾难中恢复。灾难恢复通常以 RTO 和 RPO 的值来衡量。

  • 恢复时间目标 (RTO) – 灾难后系统恢复工作状态所需的时间。换言之,RTO 用于衡量停机时间。对于全局集群,RTO 大约为数分钟。

  • 恢复点目标 (RPO) – 可能丢失的数据量(按时间衡量)。对于全局集群,RPO 通常以秒为单位进行测量。

  • 要从计划外停机中恢复,您可以执行跨区域故障转移到全局集群中的一个辅助区域。当全局集群有多个辅助区域时,如果主 AWS 区域 发生中断,请确保分离所有辅助区域。然后,您将其中一个辅助区域提升为新的主 AWS 区域。最后,在其他每个辅助区域中创建新的集群,并将这些集群附加到全局集群。

  • 将辅助集群提升为主集群时,还需要更新应用程序用于连接到全局集群的端点。要从新提升的集群获取新的写入器端点,可以通过从端点字符串中删除 -ro 来转换以前的读取器端点。例如,如果以前的读取器端点为 global-16rr-test-cluster-1.cluster-ro-12345678901.us-west-2.docdb.amazonaws.com,则新提升的写入器端点为 global-16rr-test-cluster-1.cluster-cps2igpwyrwa.us-west-2.rds.amazonaws.com

Amazon DocumentDB 全局集群的失效转移

如果一个集群中的整个集群 AWS 区域 不可用,则可以将全局群集中的另一个集群提升为具有读/写能力。

如果另一个 AWS 区域 中的集群成为主集群效果更好,您可以手动启用故障转移机制。例如,您可以提高其中一个辅助集群的容量,然后将其提升成为主集群。或者,它们之间的活动平衡 AWS 区域 可能会发生变化,因此将主集群切换到不同的集群 AWS 区域 可能会降低写入操作的延迟。

以下过程概述了如何在 DocumentDB 全局集群中提升其中一个辅助集群。

提升辅助集群

  1. 停机时停止向主集群发出 DML 语句和其他写入操作。 AWS 区域

  2. 从辅助群集中识别出 AWS 区域 要用作新的主群集的群集。如果您的全局群集中有两个(或更多)辅助 AWS 区域 群集,请选择延迟时间最少的辅助群集。

  3. 从全局集群分离您所选的辅助集群。

    从全局集群删除辅助集群会立即停止从主集群到该辅助集群的复制过程,并会将其提升为拥有完全读/写功能的独立预置的集群。与该停机区域中的主集群关联的任何其他辅助集群仍然可用,并且可以接受应用程序的调用。它们还会消耗资源。由于您要重新创建全局集群,为避免分裂大脑和其他问题,请先删除其他辅助集群,再在后续步骤中创建新的全局集群。

    有关分离的详细步骤,请参阅 从 Amazon DocumentDB 全局集群中删除某集群

  4. 重新配置应用程序,使用新的端点将所有写入操作发送到现在的独立 集群。如果您在创建全局集群时接受了提供的名称,则可以在应用程序中从集群的端点字符串中删除 -ro 以更改端点。

    例如,当辅助集群与全局集群分离时,辅助集群的端点 my-global.cluster-ro-aaaaaabbbbbb.us-west-1.docdb.amazonaws.com 将变为 my-global.cluster-aaaaaabbbbbb.us-west-1.docdb.amazonaws.com

    在下一步中,当您开始向集群添加区域时,该集群将成为新的全局数据库的主集群。

  5. AWS 区域 向集群中添加。执行此操作后,从主数据库集群到辅助数据库集群的复制过程将会开始。

  6. 根据需要添加更多内容 AWS 区域 ,以重新创建支持您的应用程序所需的拓扑。确保在做出这些更改之前、更改期间和更改之后,将应用程序写入内容发送到正确的集群,以避免全局集群中集群之间的数据不一致(大脑分裂问题)。

  7. 当停机问题已解决且您已准备好再次将原始 AWS 区域 指定为主集群时,请按相反顺序执行相同步骤:

  8. 从全局集群移除其中一个辅助集群。这将使其能够提供读取/写入流量。

  9. 将所有写入流量重定向到原始 AWS 区域中的主集群。

  10. 添加 AWS 区域 可以 AWS 区域 像以前一样设置一个或多个辅助群集。

Amazon Document AWS DB 全球集群可以使用软件开发工具包进行管理,这使您能够针对灾难恢复和业务连续性规划用例创建解决方案来自动执行全局集群故障转移流程。其中一个解决方案已通过 Apache 2.0 许可提供给我们的客户,并且可以从我们的工具库中访问此处。该解决方案利用 Amazon Route53 进行终端节点管理,并提供可根据相应事件触发的 AWS Lambda 函数。