使用AWSDMS和 Amazon Aurora 实施跨区域灾难恢复 - AWS Prescriptive Guidance

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

使用AWSDMS和 Amazon Aurora 实施跨区域灾难恢复

由马克·哈德森创作 (AWS)

环境:生产

技术:数据库

AWS服务:AWSDMS; 亚马逊RDS; 亚马逊 Aurora

Summary

自然或人为灾害可能随时发生,并可能影响在给定 Amazon Web Services (AWS) 区域中运行的服务和工作负载的可用性。为了降低风险,您必须制定包含AWS服务内置跨区域功能的灾难恢复 (DR) 计划。对于本质上不提供跨区域功能的AWS服务,灾难恢复计划还必须提供解决方案来处理跨AWS区域的故障转移。

此模式将指导您完成灾难恢复设置,该设置涉及单个区域中的两个 Amazon Aurora 我的SQL兼容版数据库集群。为了满足灾难恢复要求,数据库集群配置为使用 Amazon Aurora 全球数据库功能,单个数据库跨越多个AWS区域。AWSDatabase Migration Service (AWSDMS) 任务在本地区域的集群之间复制数据。AWSDMS,但是,目前不支持区域间的任务故障转移。此模式包括解决该限制并在两个区域AWSDMS中独立配置所需的步骤。

先决条件和限制

先决条件

  • 支持 Amazon Aurora 全球数据库的精选主要和次要AWS区域。

  • 两个独立的 Amazon Aurora 我的SQL兼容版数据库集群集中在主区域的单个账户中。

  • 数据库实例类 db.r5 或以上(推荐)。

  • 主区域中的一项AWSDMS任务,在现有数据库集群之间执行持续复制。

  • 灾难恢复区域资源已就绪,可以满足创建数据库实例的要求。有关更多信息,请参阅中使用数据库实例VPC

限制

产品版本

  • 亚马逊 Aurora 我的SQL兼容版 5.7 或 8.0。有关更多信息,请参阅 Amazon Aurora 版本

架构

目标技术堆栈

  • 亚马逊 Aurora 我的SQL兼容版全球数据库集群

  • AWS DMS

目标架构

下图显示了两个AWS区域的全球数据库,一个包含主数据库和报告数据库以及AWSDMS复制数据库,另一个包含辅助主数据库和报告数据库。

跨区域全球数据库架构图。

自动化和扩缩

您可以使用AWS CloudFormation 在辅助区域中创建必备的基础架构,例如虚拟私有云 (VPC)、子网和参数组。您还可以使用AWS CloudFormation 在灾难恢复区域中创建辅助集群并将其添加到全局数据库中。如果您使用 CloudFormation 模板在主区域创建数据库集群,则可以用其他模板对其进行更新或扩充,以创建全局数据库资源。有关更多信息,请参阅创建包含两个数据库实例的 Amazon Aurora 数据库集群和为 Aurora My 创建全局数据库集群SQL

最后,您可以在发生故障转移和故障恢复事件 CloudFormation 后使用在主区域和辅助区域中创建AWSDMS任务。有关更多信息,请参阅AWS::DMS:: ReplicationTask

工具

  • Amazon Auror a-Amazon Aurora 是一个完全托管的关系数据库引擎,与 My SQL 和 Postgre SQL 兼容。此模式使用亚马逊 Aurora 我的SQL兼容版。

  • Amazon Aurora global databases - Amazon Aurora Global Database 专为分布在全球的应用程序而设计。一个 Amazon Aurora 全球数据库可以跨越多个AWS区域。它可以在不影响数据库性能的情况下复制数据。它还支持在每个区域以低延迟实现快速本地读取,并可以从区域范围的中断中提供灾难恢复。

  • AWSDMS-AWS Database Migration Service (AWSDMS) 提供一次性迁移或持续复制。正在进行的复制任务可使源数据库与目标数据库保持同步。设置完成后,正在进行的复制任务会以最小延迟持续将源更改应用于目标。所有AWSDMS功能,例如数据验证和转换,都可用于任何复制任务。

操作说明

任务描述所需技能

修改数据库集群参数组。

在现有的数据库集群参数组中,通过将 binlog_format 参数设置为值来激活行级二进制日志记录。

AWSDMS在执行持续的复制或更改数据捕获时,需要对MYSQL兼容数据库进行行级二进制日志记录()。CDC有关更多信息,请参阅使用与 My SQL 兼容的AWS托管数据库作为源。AWS DMS

AWS管理员

更新数据库二进制日志保留期。

使用安装在您的最终用户设备上的 “我的SQL客户端” 或亚马逊弹性计算云 (AmazonEC2) 实例,在主数据库集群的写入器节点上运行亚马逊关系数据库服务 (AmazonRDS) 提供的以下存储过程,其中XX是保留日志的小时数。

call mysql.rds_set_configuration('binlog retention hours', XX)

可以通过运行以下命令确认设置。

call mysql.rds_show_configuration;

我管理SQL的兼容数据库会尽快AWS清除二进制日志。因此,保留期必须足够长,以确保在AWSDMS任务运行之前不会清除日志。24 小时的值通常就足够了,但该值应基于在灾难恢复区域中设置AWSDMS任务所需的时间。

DBA
任务描述所需技能

记录AWSDMS任务ARN。

使用 Amazon 资源名称 (ARN) 获取AWSDMS任务名称以供日后使用。要检索AWSDMS任务ARN,请在控制台中查看任务或运行以下命令。

aws dms describe-replication-tasks

和ARN如下所示。

arn:aws:dms:us-east-1:<accountid>:task:AN6HFFMPM246XOZVEUHCNSOVF7MQCLTOZUIRAMY

最后一个冒号之后的字符对应后面步骤中使用的任务名称。

AWS管理员

修改现有AWSDMS任务以记录检查点。

AWSDMS创建包含信息的检查点,以便复制引擎知道更改流的恢复点。若要记录检查点信息,请在控制台中执行以下步骤:

  1. 停止AWSDMS任务。

  2. 使用任务中的JSON编辑器将 TaskRecoveryTableEnabled 参数设置为 t rue

  3. 启动AWSDMS任务。

AWS管理员

验证检查点信息。

使用连接到集群写入器终端节点的 “我的SQL客户端”,在报告者数据库集群中查询新的元数据表,以验证该表是否存在并包含复制状态信息。运行以下命令。

select * from awsdms_control.awsdms_txn_state;

中的任务名称ARN应在该表的Task_Name列中找到。

DBA
任务描述所需技能

在灾难恢复区域创建基础设施。

创建创建和访问 Amazon Aurora 集群所需基本组件:

  • 虚拟私有云 (VPC)

  • 子网

  • 安全组

  • 网络访问控制列表

  • 子网组

  • 数据库参数组

  • 数据库集群参数组

确保两个参数组的配置与主区域配置相匹配。

AWS管理员

将灾难恢复区域添加至两个 Amazon Aurora 集群。

向主集群和报告集群 Amazon Aurora 添加辅助区域(灾难恢复区域)。有关更多信息,请参阅向 Amazon Aurora 全球数据库添加AWS区域

AWS管理员
任务描述所需技能

停止AWSDMS任务。

故障转移发生后,主区域中的AWSDMS任务将无法正常运行,应停止该任务以避免出错。

AWS管理员

执行托管故障转移。

对主数据库集群执行灾难恢复区域托管故障转移。有关说明,请参阅执行 Amazon Aurora Global Database 的托管计划内故障转移。主数据库集群的故障转移完成后,在报告器数据库集群执行相同的活动。

AWS管理员,DBA

将数据加载至主数据库。

将测试数据插入灾难恢复数据库集群中的主数据库写入器节点。此数据将用于验证复制是否正常运行。

DBA

创建AWSDMS复制实例。

要在灾难恢复区域中创建AWSDMS复制实例,请参阅创建复制实例

AWS管理员,DBA

创建AWSDMS源端点和目标端点。

要在灾难恢复区域中创建AWSDMS源和目标终端节点,请参阅创建源和目标终端节点。源应指向主数据库集群写入器实例。目标应指向报告器数据库集群写入器实例。

AWS管理员,DBA

获取复制检查点。

要获取复制检查点,请使用我的SQL客户端查询元数据表,方法是对灾难恢复区域报告器数据库集群中的写入器节点运行以下命令。

select * from awsdms_control.awsdms_txn_state;

在表中,找到与你在第二个长篇故事中获得的主区域中ARN存在的AWSDMS任务相对应的 task_name 值。

DBA

创建AWSDMS任务。

使用控制台在 DR 区域创建AWSDMS任务。在任务中,指定仅复制数据更改的迁移方法。有关更多信息,请参阅创建任务。 

  1. 在任务设置中,利用向导指定以下内容:

    • CDC源交易的启动模式-启用自定义CDC启动模式

    • 源事务的自定义CDC起点-指定恢复检查点

  2. 恢复检查点框,输入先前通过对 awsdms_txn_state 表的数据库查询获得的复制检查点值。 

  3. 在任务设置部分,选择JSON编辑器,然后将TaskRecoveryTableEnabled参数设置为 true。 

将AWSDMS任务启动迁移任务设置设置为创建时自动

AWS管理员,DBA

记录AWSDMS任务ARN。

使用获取AWSDMS任务名称ARN以供日后使用。要检索AWSDMS任务ARN,请运行以下命令。

aws dms describe-replication-tasks
AWS管理员,DBA

验证复制数据。

在灾难恢复区域中查询报告器数据库集群,以确认加载到主数据库集群中的测试数据已被复制。

DBA
任务描述所需技能

停止AWSDMS任务。

故障恢复后,灾难恢复区域中的AWSDMS任务将无法正常运行,应停止任务以避免出错。

AWS管理员

执行托管失效自动恢复。

将主数据库集群故障恢复至主区域。有关说明,请参阅执行 Amazon Aurora Global Database 的托管计划内故障转移。主数据库集群的失效自动恢复完成后,在报告器数据库集群执行相同的活动。

AWS管理员,DBA

获取复制检查点。

要获取复制检查点,请使用我的SQL客户端查询元数据表,方法是对灾难恢复区域报告器数据库集群中的写入器节点运行以下命令。

select * from awsdms_control.awsdms_txn_state;

在表中,找到与您在第四个长篇故事中获得ARN的灾难恢复区域中存在的AWSDMS任务相对应的task_name值。

DBA

更新AWSDMS源端点和目标端点。

数据库集群故障恢复后,请检查主区域中集群以确定哪些节点是写入器实例。然后验证主区域中的现有AWSDMS源和目标终端节点是否指向写入器实例。如果不是,请使用写入器实例域名系统 (DNS) 名称更新端点。

AWS管理员

创建AWSDMS任务。

使用控制台在主区域创建AWSDMS任务。在任务中,指定仅复制数据更改的迁移方法。有关更多信息,请参阅创建任务。 

  1. 在任务设置中,使用向导和指定以下内容:

    • CDC源交易的启动模式-启用自定义CDC启动模式

    • 源事务的自定义CDC起点-指定恢复检查点

  2. 恢复检查点框,输入先前通过对  awsdms_txn_state 表的数据库查询获得的复制检查点值。 

  3. 同样在任务设置部分中,选择JSON编辑器并将TaskRecoveryTableEnabled参数设置为 true

  4. 最后,将AWSDMS任务启动迁移任务设置设置为创建时自动

AWS管理员,DBA

记录AWSDMS任务 Amazon 资源名称 (ARN)。

使用获取AWSDMS任务名称ARN以供日后使用。要检索AWSDMS任务ARN,请运行以下命令:

aws dms describe-replication-tasks

在执行其他托管故障转移或灾难恢复场景事,将需要任务名称。

AWS管理员,DBA

删除AWSDMS任务。

删除主区域中的原始(当前已停止)AWSDMS任务和辅助区域中的现有AWSDMS任务(当前已停止)。

AWS管理员

相关资源

其他信息

本示例中使用 Amazon Aurora 全球数据库进行灾难恢复,因为它们提供的有效恢复时间目标 (RTO) 为 1 秒,恢复点目标 (RPO) 小于 1 分钟,两者都低于传统的复制解决方案,非常适合灾难恢复方案。

Amazon Aurora Global Database 还具有许多其他优势,包含:

  • 具有本地延迟的全球读取 - 全球消费者可以在本地延迟的情况下访问本地区域的信息。

  • 可扩展的辅助 Amazon Aurora 数据库集群 — 辅助集群可独立扩展,最多可添加 16 个只读副本。

  • 从主到辅助 Amazon Aurora DB 集群的快速复制 – 复制对主集群的性能影响很小。它发生在存储层,典型的跨区域复制延迟应小于 1 秒。

此模式也AWSDMS用于复制。Amazon Aurora 数据库提供了创建只读副本的功能,这可简化复制过程和灾难恢复设置。但是,AWSDMS通常用于在需要数据转换或目标数据库需要源数据库没有的其他索引时进行复制。