简介 — Aurora 全球数据库故障转移

Amazon Aurora 是一个兼容 MySQL 和 PostgreSQL 的关系数据库,专为云而构建。Aurora 将传统企业数据库的性能和可用性与开源数据库的简单性和成本效益相结合。 Aurora 全球数据库 允许您将关系数据库跨越多个区域。当您想要跨区域灾难恢复或在次要区域实现低延迟读取时,全球数据库是用例的理想选择。全球数据库是将读者扩展到多个区域的好方法。

2023年8月,Aurora团队 宣布 为Aurora MySQL和Aurora PostgreSQL 推出一项新的 全球数据库故障转移 功能,该功能适用于支持Aurora全球数据库的所有版本。全局数据库故障转移减少了因跨区域计划外故障转移事件而对全局数据库集群进行故障转移的运营开销。在这篇文章中,我们深入探讨了 Aurora 全球数据库的全局数据库故障转移功能,并探讨了它的工作原理以及如何利用它来提高分布式应用程序抵御故障的能力。

注意 :我们将停用旧的托管计划内故障转移术语,并将从现在起使用全局数据库切换来指代相同的功能。

Aurora 全球数据库概述

全球数据库集群由多个区域数据库集群组成。全球数据库集群在支持的区域中最多可以有六个区域数据库集群,例如 us-east- 1 和 us-west- 2 中的数据库集群。

在全球数据库拓扑中,只有一个区域是主区域,所有其他区域是次要区域。主区域包含唯一的写入器数据库实例,还包含唯一的活动写入器终端节点。写入器端点始终指向活动写入器节点。次要区域也有写入端点,但它们处于非活动状态。

每个区域数据库集群还有一个读取器终端节点。读取器终端节点平衡区域数据库集群中只读副本(如果有)的读取流量。全局数据库故障转移后,读取器端点不受影响。

在两种情况下,客户会更改其主要区域:对计划内事件(例如,区域轮换)的响应,或对计划外事件(例如区域停电)的响应。 全局数据库切换 (以前称为托管计划内故障转移)是一项支持计划内事件的现有功能,允许您以托管方式从当前的主区域切换到辅助区域。您可以将全局数据库切换用于计划的操作,例如区域轮换(例如,按照 Sun 模型),切换主区域和次要区域以进行灾难恢复 (DR) 测试。您可以 通过 亚马逊云科技 管理控制台 、亚马逊云科技 命令行接口 (亚马逊云科技 CLI) 或 RD S API 调用 全局数据库切换流程 。在切换过程中,用户选择的辅助数据库集群成为主集群,而旧的主集群担任次要角色。全局数据库切换还将复制方向从新的主区域切换到新的辅助区域。在切换过程中,来自旧主区域(现为辅助区域)的写入器终端节点变为非活动状态,新的主数据库集群中的写入器终端节点成为活动写入器终端节点。发生这种情况时,您必须重新配置数据库用户和应用程序以更新其连接字符串以使用新的端点。有关全局数据库切换的详细讨论,请参阅 Aurora 文档。

计划外故障转移的挑战

当当前的主区域数据库集群遇到服务级别中断或主区域完全中断时,可能需要进行计划外故障转移。值得注意的是,这种情况很少见,因为亚马逊云科技区域架构具有很高的弹性;但是,不能完全排除这种情况。传统上,Aurora 全球数据库故障转移是通过手动分离其中一个幸存的辅助区域数据库集群并对其进行升级来实现的。这种方法效果很好,但也有一些挑战。

首先, 从全局设置中 删除集群 并将其转换为独立群集的现有方法影响了现有的全局数据库拓扑。这意味着旧的全局数据库集群名称不再有效。此外,区域数据库集群已解耦,在幸存的区域数据库集群得到升级后,它成为唯一可用于应用程序的区域数据库集群。这意味着您必须通过添加另一个辅助区域来手动重新创建新的全球数据库拓扑。当该区域再次可用时,您还必须重新创建旧的主区域数据库集群并将其添加到新的全局数据库集群中。

全局数据库故障转移简介

随着新的全局数据库故障转移功能的推出,您现在可以管理计划外的 Aurora 全球数据库故障转移,例如区域服务中断。此功能可用于新的全球数据库部署,也可以追溯适用于现有的 Aurora 全球数据库部署。

要使用全局数据库故障转移功能,您无需更改配置。您可以 通过 亚马逊云科技 管理控制台 、亚马逊云科技 命令行接口 ( 亚马逊云科技 CLI) 或 API 启动 全球数据库故障转移 。客户可以选择最初创建全球数据库集群的幸存区域之一,然后启动故障转移过程。例如,假设全球数据库是在美国东部 1、美国西部 2 和 欧洲 东部 1 地区创建的 ,而 us-west-2 正在经历服务中断 在这种情况下,可以从 us-east-1 或 eu -east-1 区域启动全局数据库故障转移。

启动全局数据库故障转移后,将采取以下步骤:

  1. 用户选择的辅助数据库集群将其中一个只读副本提升为写入器,并在全局数据库拓扑中承担主数据库集群的角色。
  2. 如果全局数据库拓扑有其他辅助数据库集群,则会对其进行重建。
  3. Aurora 全球数据库服务继续监控旧主区域的可用性。当 Aurora 全球数据库恢复可用且运行正常时,通过恢复当前主区域数据库集群的快照,将该区域重新添加到全球数据库中。
  4. 将旧的主区域添加回全局数据库集群时,会尝试拍摄旧存储卷的快照,如果成功,则按照 rds: unplanned-global-failoval-timestamp 命名惯例提供快照

全局数据库故障转移减少了手动升级区域数据库集群的运营开销,同时保留了全局数据库拓扑。故障转移完成后,您可以将应用程序指向新的主数据库集群的写入器终端节点,然后开始从新数据库集群读取和写入。如果您的应用程序和客户端位于其他幸存的辅助区域,则它们必须等到重建辅助数据库集群后才能开始读取这些区域数据库集群读取器终端节点。

最佳实践

在全局数据库故障转移期间,用户选择的辅助区域数据库集群被提升为主集群。但是,它不会自动继承主服务器的配置选项。为了减少配置不匹配,我们建议您创建 Aurora 数据库集群参数组并提前配置选项。我们还建议创建和配置监控工具,例如 Amazon CloudWatch 警报和其他第三方监控。我们建议您在次要区域配置外部服务依赖关系,例如 亚马逊云科技 Secrets Manager 亚马逊简单存储服务(亚马逊 S3) 亚马逊云科技 Lambda。如果您在全局数据库设置中使用 无头集群 ,请确保在启动故障转移之前添加大小合适的计算实例。

有关更完整的建议列表,请参阅 Aurora 用户指南

执行全局数据库故障转移

当您创建具有至少 1 个包含至少一个实例的辅助区域数据库集群的 Aurora 全球数据库时,您可以选择执行全局数据库故障转移和全局数据库切换功能。要设置 Aurora 全球数据库,请参阅 A mazon Aurora 全球数据库 入门 用户指南。

在以下示例(图 1)中,我们创建了一个包含 2 个数据库集群的 Aurora 全球数据库。主要区域位于 ap-southeast-1 区域,辅助区域位于 ap- south-1 区域。

Figure.1 (A Global Database Cluster)

图 1 全局数据库集群

要使用控制台执行全局数据库故障转移,请完成以下步骤:

  1. 选择要进行故障转移的 Aurora 全球数据库集群。
  2. 在 “ 操作” 菜单上,选择 “ 切换” 或 “故障切换” 全局数据库

    Figure.2 (Failover Global Database cluster)

    图 2 故障转移全局数据库集群

  3. 对于目标数据库集群,选择要升级为主集群的主动 Aurora 辅助数据库集群。
  4. 选择 故障转移(允许数据丢失) 作为故障转移原因。要确认故障转移, 请键入确认 并选择 确认

执行故障转移后,您可以看到数据库状态的变化。您可以关注数据库列表的状态列来监控故障转移过程。由于全局数据库复制的异步性质,在新的主数据库集群上进行故障转移后,可能会丢失一些数据。

Figure.4 (Failover in progress)

图 4 正在进行故障转移

新的主区域数据库集群首先可用,设置从新的主数据库集群到新的辅助数据库集群的复制需要几分钟。根据数据库的大小,新的辅助区域集群可能需要几分钟到几小时才能完成设置。如果还有其他辅助区域数据库集群,则也会重新创建这些集群,然后重新建立复制。故障转移完成后,您可以看到主区域数据库集群和辅助区域数据库集群均可用。

Figure.5 (Failover completed)

图 5 故障转移已完成

要使用 亚马逊云科技 CLI 执行全局数据库故障转移,您可以使用与以下命令类似的命令:

aws rds --region primary-region failover-global-cluster --global-cluster-identifier global_db_identifier \
--target-db-cluster-identifer ARN-of-secondary-to-promote --allow-data-loss

结论

在这篇文章中,我们探讨了新推出的Aurora全球数据库故障转移功能及其优点。在计划外停机期间,您可以使用此功能快速恢复 Aurora 全球数据库集群的故障转移,同时减轻运营负担。要了解有关 Aurora 全球数据库的更多信息,请查看 详细文档 。前往 RDS 控制台 并尝试创建全球数据库集群,探索 Aurora 全球数据库 并详细了解这些功能。


作者简介

Aditya Samant 是关系数据库行业的资深人士,在使用商业和开源数据库方面拥有 20 多年的经验。多年来,他担任过许多职务,包括数据库顾问、专业支持、DBA 和数据库架构师。他目前在亚马逊网络服务担任高级数据库专家解决方案架构师。在他目前的职位上,他花时间与客户合作设计可扩展、安全和强大的云原生架构。Aditya还与服务团队紧密合作,合作设计和交付亚马逊旗舰关系数据库Amazon Aurora的新功能。

Surendar Munimohan 是亚马逊网络服务的高级数据库解决方案架构师。他在使用关系数据库和在 亚马逊云科技 中架构高度可扩展的应用程序方面拥有十多年的经验。在他目前的职位上,他与客户合作,在 亚马逊云科技 Cloud 中设计可扩展、高度可用、安全且经济实惠的解决方案。