本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
灾难恢复和 Amazon DocumentDB 全局集群
主题
通过使用全局群集,您可以快速从区域故障等灾难中恢复。灾难恢复通常以 RTO 和 RPO 的值来衡量。
-
恢复时间目标 (RTO):灾难后系统恢复工作状态所需的时间。换言之,RTO 用于衡量停机时间。对于全局集群,RTO 在几分钟内。
-
恢复点目标 (RPO):可能丢失的数据量(按时间衡量)。对于全局集群,RPO 通常以秒为单位进行测量。
-
要从计划外停机中恢复,您可以对全局群集中的一个辅助服务器执行跨区域故障转移。当您的全局集群有多个辅助区域时,请确保将所有要提升为主区域的辅助区域分离。然后,您将其中一个次要区域提升为新的主区域 AWS 区域。最后,您在其他每个辅助区域中创建新集群,并将这些集群连接到您的全局集群。
对 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 CloudWatch 事件和警报 — 根据需要使用与全局集群相同的日志记录功能、警报等配置升级集群。与参数组一样,在故障转移过程中,这些特征的配置不会从主数据库集群继承。某些 CloudWatch 指标,例如复制延迟,仅适用于辅助区域。因此,失效转移会更改查看这些指标和对指标设置警报的方式,并且可能要求更改任何预定义的控制面板。有关 Amazon DocumentDB 集群和监控的更多信息,请参阅 监控和登录 Amazon DocumentDB。
通常,所选的辅助集群会在一分钟内代入主角色。一旦新的主区域的写入器节点可用,您就可以将应用程序连接到该节点并恢复工作负载。Amazon DocumentDB 提升新的主集群后,它会自动重建所有其他辅助区域集群。
由于 Amazon DocumentDB 全局集群使用异步复制,因此每个辅助区域的复制滞后可能会有所不同。Amazon DocumentDB 重建这些辅助区域,使其具有与新的主区域集群完全相同的时间点数据。完成重建任务的持续时间可能需要几分钟到几小时,具体取决于存储卷的大小和区域之间的距离。当辅助区域集群从新的主区域完成重建后,它们就可供进行读取访问了。一旦新的主写入器已提升并可用,新的主区域的集群就可以处理 Amazon DocumentDB 全局集群的读取和写入操作。
为了还原全局集群的原始拓扑,Amazon DocumentDB 会监控旧主区域的可用性。一旦该区域正常运行并再次可用,Amazon DocumentDB 就会自动将其作为辅助区域重新添加到全局集群中。在旧的主区域中创建新的存储卷之前,Amazon DocumentDB 会尝试在出现故障时拍摄旧存储卷的快照。它这样做是为了让您可以用它来恢复任何丢失的数据。如果此操作成功,Amazon DocumentDB 会将此名为 “rds: docdb-unplanned-global-failover-old-primaryned-name-of-old-primary-” 的快照放到的快照部分。DB-cluster-timestamp AWS 管理控制台还可以在 DescribeDBClusterSnapshots API 操作返回的信息中看到列出的此快照。
注意
旧存储卷的快照是系统快照,受旧的主集群上配置的备份保留期限制。要在保留期之外保留此快照,可以复制它以另存为手动快照。要了解有关复制快照的更多信息(包括定价),请参阅复制集群快照。
还原原始拓扑后,您可以通过在对业务和工作负载最有意义的时候执行切换操作,将全局集群失效自动恢复到原始主区域。为此,请按照对 Amazon DocumentDB 全局集群执行切换中的步骤进行操作。
您可以使用 AWS 管理控制台、或 Amazon DocumentDB API 对 Amazon DocumentDB 全局集群进行故障切换。 AWS CLI
对 Amazon DocumentDB 全局集群执行手动失效转移
如果一个集群中的整个集群 AWS 区域 不可用,则可以将全局群集中的另一个集群升级为具有 read/write 功能。
如果另一个 AWS 区域 中的集群成为主集群效果更好,您可以手动启用全局集群失效转移机制。例如,您可以提高其中一个辅助集群的容量,然后将其提升成为主集群。或者两者之间的活动平衡 AWS 区域 可能会发生变化,因此将主集群切换到不同的集群 AWS 区域 可能会降低写入操作的延迟。
以下过程概述了如何在 Amazon DocumentDB 全局集群中提升其中一个辅助集群。
提升辅助集群
-
停机期间停止向主群集发出 DML 语句和其他写入操作。 AWS 区域
-
从辅助集群中识别出一个集群 AWS 区域 以用作新的主集群。如果您的全局集群中有两个(或更多)辅助 AWS 区域 集群,请选择延迟时间最短的辅助集群。
-
从全局集群分离您所选的辅助集群。
从全局群集移除辅助群集会立即停止从主群集到该辅助群集的复制,并将其升级为具有全部 read/write 功能的独立预置群集。与该地区中断的主集群关联的任何其他辅助集群仍然可用,并且可以接受来自您的应用程序的呼叫。它们还会消耗资源。由于您要重新创建全局集群,为避免分裂大脑和其他问题,请先删除其他辅助集群,再在后续步骤中创建新的全局集群。
有关分离的详细步骤,请参阅 从 Amazon DocumentDB 全局集群中删除某集群。
-
在下一步中,当您开始向集群添加区域时,该集群将成为新的全局数据库的主集群。
-
AWS 区域 向集群中添加。执行此操作后,从主数据库集群到辅助数据库集群的复制过程将会开始。
-
根据需要添加更多 AWS 区域 拓扑,以重新创建支持您的应用程序所需的拓扑。确保在做出这些更改之前、更改期间和更改之后,将应用程序写入内容发送到正确的集群,以避免全局集群中集群之间的数据不一致(大脑分裂问题)。
-
当停机问题已解决且您已准备好再次将原始 AWS 区域 指定为主集群时,请按相反顺序执行相同步骤:
-
从全局集群移除其中一个辅助集群。这将使其能够为 read/write 流量提供服务。
-
将所有写入流量重定向到原始 AWS 区域中的主集群。
-
添加 AWS 区域 ,以 AWS 区域 像以前一样设置一个或多个辅助集群。
可以使用软件开发 AWS 工具包管理 Amazon DocumentDB 全局集群,使您能够为灾难恢复和业务连续性规划用例创建自动执行全局集群故障转移流程的解决方案。其中一个解决方案已通过 Apache 2.0 许可提供给我们的客户,并且可以从我们的工具库中访问此处
对 Amazon DocumentDB 全局集群执行切换
通过使用切换,您可以定期更改主集群的区域。此方法适用于受控场景,例如操作维护和其他计划内操作过程。
切换有三种常见使用案例:
适用于对特定行业施加的“区域轮换”要求。例如,金融服务法规可能要求第 0 层系统在几个月内切换到不同的区域,以确保定期执行灾难恢复过程。
适用于多区域“全天候”应用程序。例如,一家企业可能希望根据不同时区的工作时间在不同区域提供延迟更低的写入。
作为一种零数据丢失方法,可在失效转移后失效自动恢复到原始主区域。
注意
切换功能专为用于正常运行的 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 CloudWatch 事件和警报 — 根据需要使用与全局集群相同的日志记录功能、警报等配置升级集群。与参数组一样,在切换过程中,这些特征的配置不会从主数据库集群继承。某些 CloudWatch 指标,例如复制延迟,仅适用于主要区域。因此,切换会更改查看这些指标和对指标设置警报的方式,并且可能要求更改任何预定义的控制面板。有关更多信息,请参阅 监控和登录 Amazon DocumentDB。
注意
通常,角色切换最多可能需要几分钟。
切换过程完成后,提升后的 Amazon DocumentDB 集群即可处理全局集群的写入操作。
您可以使用 AWS 管理控制台 或以下命令切换您的 Amazon DocumentDB 全局集群: AWS CLI
解除全局集群切换或失效转移的阻止
不同引擎版本上的区域
当全局集群中的所有区域集群并非都使用相同的引擎版本时,会阻止全局集群切换和失效转移。如果版本不匹配,则在调用切换或故障转移时可能会看到此错误:指定的目标数据库集群运行的引擎版本的补丁级别与源数据库集群的补丁级别不同。定期应用最新的引擎版本,使您的全局集群保持健康状态。
要解决此错误,请先将所有辅助区域更新到相同的引擎版本,然后应用任何待处理的维护操作项目,将主要区域更新为相同的引擎版本。要查看待处理维护操作项目并应用任何必要的变更来更正问题,请按照以下选项卡之一中的说明进行操作:
目标集群上的待定更改
当目标辅助群集有尚未应用的预定更改(例如您在下一个维护时段请求的修改或维护操作)时,切换和故障转移也会被阻止。在这种情况下,你可能会在调用切换或故障转移时看到这个错误:你无法故障转移到带有 ARN 的集群,。要解除对该操作的阻止,请删除目标集群上的预定更改。这些步骤取决于变更的类型。删除预定更改且群集状态恢复为后arn:aws:rds:us-east-1:001234567890:cluster:docdb-2025-03-27-19-21-15因为集群正在修改或修改待处理。集群可用时再试一次available,重试切换或故障转移。
取消预定的维护操作
您无法从中取消预定维护操作(撤消选择加入) AWS 管理控制台,因此请使用。 AWS CLI
恢复预定的群集修改
管理 Amazon DocumentDB 全球集群的 RPO
使用 Amazon DocumentDB 全局集群,您可以使用参数管理恢复点目标 (RPO)。global_db_rpoRPO 表示在停机时可能丢失的最大数据量。
当您为 Amazon DocumentDB 全局集群设置 RPO 时,Amazon DocumentDB 会监控所有辅助集群的 RPO 延迟时间。这种监控可确保至少有一个辅助群集保持在目标 RPO 窗口内。
RPO 设置控制 Amazon DocumentDB 如何管理主集群上的写入事务,以限制发生故障转移时可能出现的数据丢失。Amazon DocumentDB 会评估 RPO 和 RPO 延迟时间,以便在主服务器上提交(或阻止)交易,如下所示:
-
如果至少有一个辅助数据库集群的 RPO 滞后时间小于 RPO,则提交事务。
-
如果所有辅助数据库集群的 RPO 滞后时间大于 RPO,则阻止事务。
换句话说,如果所有辅助集群都落后于目标 RPO,Amazon DocumentDB 将暂停主集群上的交易。只要至少一个辅助数据库集群的延迟时间降至 RPO 以下,Amazon DocumentDB 就会恢复并提交已暂停的交易。结果是在满足 RPO 条件之后,才能提交事务。
global_db_rpo 参数是动态的。如果您决定在滞后充分减少之前不希望所有写入事务都停滞不前,则可以快速将其重置。在这种情况下,Amazon DocumentDB 会在短暂延迟后应用更改。
重要
在只有两个 AWS 区域的全球数据库中,我们建议将global_db_rpo参数的默认值保留在辅助区域的参数组中。否则,由于主 AWS 区域丢失而执行故障转移可能会导致 Amazon DocumentDB 暂停交易。取而代之的是,等到 Amazon DocumentDB 完成对旧故障 AWS 区域中的集群的重建,然后再更改此参数以强制执行最大 RPO。
设置恢复点目标
该global_db_rpo参数控制 Amazon DocumentDB 数据库的 RPO 设置。有效值范围从 20 秒到 2,147,483,647 秒(68 年)。选择切合实际的价值来满足您的业务需求。例如,您可能希望最多为 RPO 留出 10 分钟的时间,在这种情况下,可以将值设置为 600。
您可以使用 AWS 管理控制台、或 Amazon DocumentDB API 为 Amazon DocumentDB 全局集群设置此值。 AWS CLI
查看恢复点目标
全局群集的恢复点目标 (RPO) 存储在每个数据库集群的global_db_rpo参数中。
您可以使用 CLI 查看 Amazon DocumentDB 数据库集群的global_db_rpo参数。使用该--query选项仅返回global_db_rpo参数组中的参数。
对于 Linux、macOS 或 Unix:
aws docdb describe-db-cluster-parameters \ --db-cluster-parameter-group-namemy_custom_global_parameter_group\ --query "Parameters[?ParameterName=='global_db_rpo']"
对于 Windows:
aws docdb describe-db-cluster-parameters ^ --db-cluster-parameter-group-namemy_custom_global_parameter_group^ --query "Parameters[?ParameterName=='global_db_rpo']"
该命令返回的输出类似于下方内容。
[
{
"ParameterName": "global_db_rpo",
"Description": "(s) Recovery point objective threshold, in seconds, that blocks user commits when it is violated.",
"Source": "engine-default",
"ApplyType": "dynamic",
"DataType": "integer",
"AllowedValues": "20-2147483647",
"IsModifiable": true,
"ApplyMethod": "immediate"
}
]
有关查看集群参数组参数的更多信息,请参阅管理 Amazon DocumentDB 集群参数组。
禁用恢复点目标
要禁用 RPO,请重置 global_db_rpo 参数。您可以使用 AWS 管理控制台、或 Amazon DocumentDB API 重置参数。 AWS CLI