灾难恢复和 Amazon DocumentDB 全局集群 - Amazon DocumentDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

灾难恢复和 Amazon DocumentDB 全局集群

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

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

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

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

对 Amazon DocumentDB 全局集群执行托管式失效转移

这种方法用于在发生真实的区域性灾难或完全的服务级别中断时实现业务连续性。

在托管式失效转移期间,主集群会失效转移到您选择的辅助区域,同时维护 Amazon DocumentDB 全局集群的现有复制拓扑。所选的辅助集群将其一个只读节点提升为完全写入器状态。此步骤允许集群代入主集群的角色。在此集群代入其新角色期间,您的数据库在短时间内不可用。当该辅助集群成为新的主集群时,未从旧的主集群复制到选定辅助集群的数据可能会丢失。在与新主卷同步之前,旧主卷会尽力尝试拍一张快照,以便在快照中保存未被复制的数据。

注意

仅当主集群和辅助集群具有相同的主要、次要和补丁级别引擎版本时,您才能对 Amazon DocumentDB 全局集群执行托管式跨区域集群失效转移。但是,补丁级别可能会有所不同,具体取决于次要引擎版本。如果您的引擎版本不兼容,则可以按照对 Amazon DocumentDB 全局集群执行手动失效转移中的步骤手动执行失效转移。

为最大限度地减少数据丢失,我们建议您在使用此特征之前执行以下操作:

  • 使应用程序离线以防止写入内容被发送到 Amazon DocumentDB 全局集群的主集群。

  • 查看所有 Amazon DocumentDB 辅助集群的滞后时间。选择复制滞后最小的辅助区域可以最大限度地减少当前出现故障的主区域的数据丢失。通过查看亚马逊中的GlobalClusterReplicationLag指标,查看全局集群中所有 Amazon DocumentDB 辅助集群的延迟时间。 CloudWatch这些指标显示复制到辅助集群滞后于复制到主集群的时间(以毫秒为单位)。

    有关亚马逊 DocumentDB CloudWatch 指标的更多信息,请参阅。Amazon DocumentDB 指标

在托管式失效转移期间,所选的辅助集群将提升为新角色,即主集群。但是,它不会继承主集群的各种配置选项。配置不匹配可能会导致性能问题、工作负载不兼容和其他异常行为。为避免出现此类问题,我们建议您解决以下方面的 Amazon DocumentDB 全局集群之间的差异问题:

  • 为新的主数据库集群配置 Amazon DocumentDB 集群参数组(如有必要)- 您可以为 Amazon DocumentDB 全局集群中的每个集群单独配置 Amazon DocumentDB 集群参数组。因此,当您提升辅助集群以接管主数据库集群的角色时,辅助数据库集群中参数组的配置可能与主数据库集群的配置不同。如果是这样,请修改提升后的辅助集群的参数组,使其与主集群的设置一致。要了解如何操作,请参阅修改 Amazon DocumentDB 集群参数组

  • 配置监控工具和选项,例如 Amazon CloudWatch 事件和警报 — 根据全局集群的需要,为提升的集群配置相同的日志记录功能、警报等。与参数组一样,在故障转移过程中,这些特征的配置不会从主数据库集群继承。某些 CloudWatch 指标(例如复制延迟)仅适用于次要区域。因此,失效转移会更改查看这些指标和对指标设置警报的方式,并且可能要求更改任何预定义的控制面板。有关 Amazon DocumentDB 集群和监控的更多信息,请参阅 监控 Amazon DocumentDB

通常,所选的辅助集群会在几分钟内代入主角色。一旦新的主区域的写入器节点可用,您就可以将应用程序连接到该节点并恢复工作负载。Amazon DocumentDB 提升新的主集群后,它会自动重建所有其他辅助区域集群。

由于 Amazon DocumentDB 全局集群使用异步复制,因此每个辅助区域的复制滞后可能会有所不同。Amazon DocumentDB 重建了这些辅助区域,使其 point-in-time数据与新的主区域集群完全相同。完成重建任务的持续时间可能需要几分钟到几小时,具体取决于存储卷的大小和区域之间的距离。当辅助区域集群从新的主区域完成重建后,它们就可供进行读取访问了。一旦新的主写入器已提升并可用,新的主区域的集群就可以处理 Amazon DocumentDB 全局集群的读取和写入操作。

为了还原全局集群的原始拓扑,Amazon DocumentDB 会监控旧主区域的可用性。一旦该区域正常运行并再次可用,Amazon DocumentDB 就会自动将其作为辅助区域重新添加到全局集群中。在旧的主区域中创建新的存储卷之前,Amazon DocumentDB 会尝试在出现故障时拍摄旧存储卷的快照。它这样做是为了让您可以用它来恢复任何丢失的数据。如果此操作成功,Amazon DocumentDB 会将名为 “rds: name-of-old-primary-db-cluster docdb-unplanned-global-failover-timeStamp” 的快照放在快照部分中。 Amazon Web Services Management Console还可以在 DescribeDBClusterSnapshots API 操作返回的信息中看到列出的此快照。

注意

旧存储卷的快照是系统快照,受旧的主集群上配置的备份保留期限制。要在保留期之外保留此快照,可以复制它以另存为手动快照。要了解有关复制快照的更多信息(包括定价),请参阅复制集群快照

还原原始拓扑后,您可以通过在对业务和工作负载最有意义的时候执行切换操作,将全局集群失效自动恢复到原始主区域。为此,请按照对 Amazon DocumentDB 全局集群执行切换中的步骤进行操作。

您可以使用 Amazon Web Services Management Console、或 Amazon DocumentDB API 对亚马逊文档数据库全局集群进行故障切换。 Amazon CLI

Using the Amazon Web Services Management Console

对 Amazon DocumentDB 全局集群执行托管式失效转移

  1. 登录 Amazon Web Services Management Console,然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com

  2. 在导航窗格中,选择集群

  3. 查找并选择要进行失效转移的 Amazon DocumentDB 全局集群。

    图片:选择了全局集群的集群表。
  4. 操作菜单中选择切换或失效转移

  5. 在弹出的对话框中,选择失效转移,然后从新主集群字段下拉列表中选择辅助集群。

    图片:全局集群切换或失效转移对话框。
  6. 在最后一个字段中,键入“confirm”。然后,选择 Confirm(确认)

    主集群的状态更改为“失效转移”。这种情况应该需要一分钟左右。在此期间,新主集群的状态显示“正在修改...”。新主集群升级后将显示“可用”,并且能够处理读取和写入事务。与新主集群重新同步时,包含旧主集群的辅助区域将显示“正在重新同步...”。与新主集群类似,只有在状态变为“可用”后,旧主集群才能处理事务。

  7. 完成后,原始主集群将变为辅助集群。选定的辅助集群将变为主集群。

    图片:显示新主集群的集群表。
Using the Amazon CLI

对 Amazon DocumentDB 全局集群执行托管式失效转移

使用 failover-global-cluster CLI 命令对 Amazon DocumentDB 全局集群进行失效转移。使用命令,传递下列参数的值:

  • --region— 指定 Amazon DocumentDB 全局集群的主集群的运行 Amazon Web Services 区域 位置。

  • --global-cluster-identifier— 指定 Amazon DocumentDB 全局集群的名称。

  • --target-db-cluster-identifier— 指定要将其提升为 Amazon DocumentDB 全局集群的主集群的 Amazon DocumentDB 辅助集群的 Amazon 资源名称 (ARN)。

  • --allow-data-loss – 显式使其成为失效转移操作而不是切换操作。如果异步复制组件尚未完成将所有复制的数据发送到辅助区域,则失效转移操作可能会导致一些数据丢失。

对于 Linux、macOS 或 Unix:

aws docdb --region region_of_selected_secondary \ failover-global-cluster --global-cluster-identifier global_cluster_id \ --target-db-cluster-identifier arn_of_secondary_to_promote \ --allow-data-loss

对于 Windows:

aws docdb --region region_of_selected_secondary ^ failover-global-cluster --global-cluster-identifier global_cluster_id ^ --target-db-cluster-identifier arn_of_secondary_to_promote ^ --allow-data-loss

对 Amazon DocumentDB 全局集群执行手动失效转移

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

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

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

提升辅助集群

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

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

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

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

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

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

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

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

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

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

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

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

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

对 Amazon DocumentDB 全局集群执行切换

通过使用切换,您可以定期更改主集群的区域。此方法适用于受控场景,例如操作维护和其他计划内操作过程。

切换有三种常见使用案例:

  • 适用于对特定行业施加的“区域轮换”要求。例如,金融服务法规可能要求第 0 层系统在几个月内切换到不同的区域,以确保定期执行灾难恢复过程。

  • 适用于多区域 “follow-the-sun” 应用程序。例如,一家企业可能希望根据不同时区的工作时间在不同区域提供延迟更低的写入。

  • 作为故障转移后故障恢复到原始主区域 zero-data-loss的一种方法。

注意

切换功能专为用于正常运行的 Amazon DocumentDB 全局集群而设计。要从计划外停机中进行恢复,请按照“对 Amazon DocumentDB 全局集群执行手动失效转移”中的相应过程操作。

要执行切换,您的目标辅助数据库集群必须运行与主数据库集群完全相同的引擎版本(包括补丁级别),具体取决于引擎版本。有关更多信息,请参阅托管式跨区域切换和失效转移的补丁级别兼容性 在开始切换之前,请检查全球集群中的引擎版本,以确保它们支持托管式跨区域切换,并在需要时对其进行升级。如果引擎版本不匹配,Amazon DocumentDB 会自动阻止对切换集群的调用。

在切换过程中,Amazon DocumentDB 会将您的主集群切换到您选择的辅助区域,同时维护全局集群的现有复制拓扑。在开始切换过程之前,Amazon DocumentDB 会等待所有辅助区域集群与主区域集群完全同步。然后,主区域中的数据库集群将变为只读状态,所选辅助集群将其一个只读节点提升为完全写入器状态。将此节点提升为写入器将允许该辅助集群代入主集群的角色。由于所有辅助集群在过程开始时都与主集群同步,因此新的主集群将继续执行 Amazon DocumentDB 全局集群的操作,而不会丢失任何数据。您的数据库在短时间内不可用,而主集群和所选的辅助集群将担任其新角色。

为了优化应用程序可用性,我们建议您在使用此特征之前执行以下操作:

  • 在非高峰时间段,或在向主集群写入操作最少的其他时间执行此操作。

  • 使应用程序离线以防止写入内容被发送到 Amazon DocumentDB 全局集群的主集群。

  • 通过查看亚马逊中的GlobalClusterReplicationLag指标,查看全局集群中所有 Amazon DocumentDB 辅助集群的延迟时间。 CloudWatch该指标显示复制到辅助集群滞后于复制到主集群的时间(以毫秒为单位)。该值与 Amazon DocumentDB 完成切换所需的时间成正比。因此,滞后值越大,切换所需的时间就越长。

    有关亚马逊 DocumentDB CloudWatch 指标的更多信息,请参阅。Amazon DocumentDB 指标

在切换期间,所选的辅助数据库集群将提升为新角色,即主数据库集群。但是,它不会继承主数据库集群的各种配置选项。配置不匹配可能会导致性能问题、工作负载不兼容和其他异常行为。为避免出现此类问题,我们建议您解决以下方面的 Amazon DocumentDB 全局集群之间的差异问题:

  • 为新的主数据库集群配置 Amazon DocumentDB 数据库集群参数组(如有必要)- 您可以为 Amazon DocumentDB 全局集群中的每个集群单独配置 Amazon DocumentDB 集群参数组。这意味着,当您提升辅助数据库集群以接管主数据库集群的角色时,辅助数据库集群中参数组的配置可能与主数据库集群的配置不同。如果是这样,请修改提升后的辅助数据库集群的参数组,使其与主集群的设置一致。要了解如何操作,请参阅管理 Amazon DocumentDB 集群参数组

  • 配置监控工具和选项,例如 Amazon Ev CloudWatch ents 和警报 — 根据全局集群的需要,为提升的集群配置相同的日志记录功能、警报等。与参数组一样,在切换过程中,这些特征的配置不会从主数据库集群继承。某些 CloudWatch 指标(例如复制延迟)仅适用于主要区域。因此,切换会更改查看这些指标和对指标设置警报的方式,并且可能要求更改任何预定义的控制面板。有关更多信息,请参阅 监控 Amazon DocumentDB

注意

通常,角色切换最多可能需要几分钟。

切换过程完成后,提升后的 Amazon DocumentDB 集群即可处理全局集群的写入操作。

您可以使用 Amazon Web Services Management Console 或切换您的 Amazon DocumentDB 全局集群: Amazon CLI

Using the Amazon Web Services Management Console

对 Amazon DocumentDB 全局集群执行切换

  1. 登录 Amazon Web Services Management Console,然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com

  2. 在导航窗格中,选择集群

  3. 查找并选择要进行切换的 Amazon DocumentDB 全局集群。

    图片:选择了全局集群的集群表。
  4. 操作菜单中选择切换或失效转移

  5. 在弹出的对话框中,选择切换,然后从新主集群字段下拉列表中选择辅助集群。

    图片:选择了辅助集群的集群切换对话框。
  6. 选择确认

    主集群的状态更改为“切换”。这种情况应该需要三分钟左右。在此期间,所有区域集群的状态显示“正在修改...”。一旦区域同步且新主集群升级后,所有状态字段将显示“可用”,并且能够处理事务。

  7. 完成后,原始主集群将变为辅助集群。选定的辅助集群将变为主集群。

    图片:显示新主集群的集群表。
Using the Amazon CLI

对 Amazon DocumentDB 全局集群执行切换

使用 switchover-global-cluster CLI 命令切换 Amazon DocumentDB 全局集群。使用命令,传递下列参数的值:

  • --region— 指定 Amazon DocumentDB 全局集群的主集群的运行 Amazon Web Services 区域 位置。

  • --global-cluster-identifier— 指定 Amazon DocumentDB 全局集群的名称。

  • --target-db-cluster-identifier— 指定要将其提升为 Amazon DocumentDB 全局集群的主集群的 Amazon DocumentDB 辅助集群的 Amazon 资源名称 (ARN)。

对于 Linux、macOS 或 Unix:

aws docdb --region region_of_primary \ switchover-global-cluster --global-cluster-identifier global_cluster_id \ --target-db-cluster-identifier arn_of_secondary_to_promote

对于 Windows:

aws docdb --region region_of_primary ^ switchover-global-cluster --global-cluster-identifier global_cluster_id ^ --target-db-cluster-identifier arn_of_secondary_to_promote