在AWS DMS中执行并行升级,通过移动任务来最小化业务影响 数据库博客
在 AWS DMS 中通过移动任务进行并行升级,最大限度地减少业务影响
作者:Eddie Yao、Aritra Biswas 和 Scott St Martin,2024年4月30日发布于 高级 (300) 、AWS数据库迁移服务 、最佳实践 和 技术操作指南永久链接评论分享
AWS 数据库迁移服务AWS DMS适用于多种用例,例如将传统或本地数据库迁移到托管的云服务、将在线事务处理OLTP数据库如 Amazon 关系数据库服务中的实时数据变化复制到在线分析处理OLAP数据仓库如 Amazon Redshift、构建数据湖以及对数据存储中的变化数据进行实时处理。
AWS DMS 定期发布 新版本,其中包含新功能、漏洞和安全修复以及性能改进。如果您在关键环境中使用 AWS DMS,尤其是在持续数据复制的用例中,您需要在执行 AWS DMS 版本升级时保持业务连续性并最大限度地减少业务影响。
在本文中,我们讨论了常见的 AWS DMS 版本升级方法,并深入探讨通过 移动任务 采用并行升级的方法,以最小化业务影响。
关键要点
并行升级:采用侧面升级的方法可以在迁移过程中减小影响,特别是在复杂的环境中。恢复检查点:在移动任务前,确保捕获恢复检查点,以便快速恢复。最佳实践:在升级时遵循最佳实践,以确保升级过程平稳。AWS DMS 版本升级选项
一种简单的 AWS DMS 版本升级方法是 就地升级,即直接修改 AWS DMS 复制实例并将引擎版本更改为新版本。这种升级方式适用于任务较少或可以接受一定的停机时间的 AWS DMS 复制实例。
如果您有 变更数据捕获 (CDC) 任务,并且具有 支持的数据库端点,您可以停止该任务,创建一个具有新版本的 AWS DMS 引擎的新复制实例,并创建一个仅用于 CDC 的任务与 恢复检查点。但如果需要重新加载表,则需创建一个单独的全量加载加 CDC 任务。
如果 AWS DMS 版本被 弃用,AWS 会在下一个维护窗口中将弃用版本的复制实例升级到 默认版本。
如果您不想管理复制实例,可以考虑使用 AWS DMS Serverless,它自动设置、扩展和管理迁移资源,让您的数据库迁移简单且更具成本效益。AWS DMS Serverless 使用 默认 引擎版本。
为减少停机并保持业务关键工作负载的稳定复制环境,您可以通过将复制任务从现有实例移动到新实例来采用并行升级的方法。这是一种更安全的升级方式,尤其适用于任务较多的复制实例,因为在发生故障的情况下,它可以通过控制造任务的升级来减少影响范围。在实施此并行升级方法时的常见用例是 PostgreSQL 源的高存储消耗在 AWS DMS CDC 任务长时间停止时。
解决方案概述
在本文中,我们展示如何使用 移动任务选项 利用 AWS 命令行界面 (AWS CLI)、AWS 管理控制台 或 AWS DMS API 升级 AWS DMS 复制实例版本。以下图表说明了解决方案架构。
前提条件
在开始之前,建议您查看有关 移动任务 和 movereplicationtask 命令的信息。
使用 API 调用执行升级可让您对 AWS DMS 复制任务执行级联升级,以确保复制实例中的所有任务在受控情况下完成升级,从而最小化业务影响。要顺利升级,请在升级或移动复制任务之前完成以下步骤:
使用最新的 AWS DMS 版本创建新的复制实例。为获得最佳性能,确保新实例与现有 AWS DMS 复制实例具有相同的 实例类型。存储复制任务 ARN 和新复制实例 ARN 的详细信息。以下是一些示例值:
bashreplicationtaskarn=arnawsdmsltregiongtltaccountgttasklttaskarngttargetreplicationinstancearn=arnawsdmsltregiongtltaccountgtrepltreparngt
停止将要移动到新实例的任务:
蓝鲸加速器免费破解版bashaws dms stopreplicationtask replicationtaskarn replicationtaskarn
当任务停止时,捕获此任务的恢复检查点:
bashaws dms describereplicationtasks filters Name=replicationtaskarnValues=arnawsdmsltregiongtltaccountnumbergttasklttaskarngt query ReplicationTasks[0]RecoveryCheckpoint
恢复检查点 在某些情况下非常有用,如果任务由于某种原因失败,可以从上次停止的端点重新启动该任务。
完成这些步骤后,您可以将 AWS DMS 复制任务移动到较高版本的新复制实例。该功能可以通过 AWS DMS API、AWS DMS CLI 和控制台访问。以下各节将介绍每个选项的步骤。
使用 AWS CLI 移动复制任务
完成以下步骤以使用 AWS CLI 移动任务:
存储复制任务 ARN 和复制实例 ARN 后,完成前提条件,输入以下 AWS CLI 命令来移动复制任务:
bashaws dms movereplicationtask replicationtaskarn replicationtaskarn targetreplicationinstancearn targetreplicationinstancearn
这条 API 调用的响应是复制任务对象。
使用 describereplicationtask AWS CLI 命令检索或监控任务状态:
bashaws dms describereplicationtasks filters Name=replicationtaskarnValues=replicationtaskarn query ReplicationTasks[0]{ReplicationInstanceArnReplicationInstanceArnReplicationTaskArnReplicationTaskArnStatusStatus}
这应返回如下响应:
json{ReplicationInstanceArn arnawsdmsltregiongtltaccountgtrepltreparngt ReplicationTaskArn arnawsdmsltregiongtltaccountgttasklttaskarngtStatus moving}任务状态在移动完成后将变为停止。
恢复复制任务以继续迁移:
bashaws dms startreplicationtask replicationtaskarn replicationtaskarn startreplicationstarttype resumeprocessing
此时,升级已完成。复制任务在升级后的 AWS DMS 复制实例中恢复。
使用控制台移动复制任务
使用 AWS DMS 控制台将复制任务转移到另一实例时,请完成以下步骤:
在 AWS DMS 控制台上,选择导航窗格中的 数据库迁移任务。选择您想要移动的任务。在 操作 菜单中选择 移动。
在 复制实例 中,选择新实例以托管该任务。

选择 移动数据库迁移任务。
恢复复制任务。使用 AWS DMS API 移动复制任务
在此示例中,我们展示了使用 Boto3 客户端 将复制任务移动到新实例的示例 API 调用。停止任务以及存储复制实例、复制任务和检查点详细信息的初始步骤保持不变。以下是代码示例:
pythonimport boto3
AWS 凭证和区域
awsaccesskey = awssecretkey = awsregion =
DMS 客户端
dmsclient = boto3client(dms regionname=awsregion awsaccesskeyid=awsaccesskey awssecretaccesskey=awssecretkey)
复制任务详细信息
replicationtaskarn = arnawsdmstasknewreplicationinstancearn = arnawsdmsrep
使用新复制实例更新复制任务
response = dmsclientmovereplicationtask( ReplicationTaskArn=replicationtaskarn TargetReplicationInstanceArn=newreplicationinstancearn)print(response)
注意事项
移动复制任务引入了两个新状态:
移动中 任务正处于移动到另一个复制实例的过程中。在移动完成之前,复制处于此状态。在移动期间,唯一允许的操作是删除任务。移动失败 当由于任何原因例如目标复制实例存储空间不足导致任务移动失败时,复制任务将进入此状态。在此状态下,可以启动、修改、移动或删除复制任务。如果任务处于 failedmove 状态并且您无法从新复制实例恢复任务,请考虑使用前一步捕获的恢复检查点创建一个正在进行的 复制仅 CDC任务,并根据捕获的检查点信息重新启动它。有关更多信息,请参阅 如何在 AWS DMS 中使用原生 CDC 支持 和 使用检查点作为 CDC 启动点。
即使在 failedmove 状态,您仍然可以再次执行复制任务的移动或从旧复制实例恢复任务。在某些情况下,如果任务无法在移动到新实例后恢复,恢复检查点是非常有用的。
AWS DMS 版本升级最佳实践
在升级 AWS DMS 版本时,请考虑以下最佳实践:
在较低环境中进行测试。测试环境应在数据量和样本数据集方面与生产环境相匹配。创建 多可用区部署,以支持高可用性和故障转移。在可用区故障时,来自另一个可用区的复制实例将介入并继续数据复制。为 AWS DMS 任务设置适当的 监控,并通知相关方任何升级错误。有关在任务级别设置监控的更多信息,请参阅 使用 AWS DMS 自动化数据库迁移监控。您应了解重要的 复制实例和任务指标,如 FreeableMemory 、 SwapUsage 、 CDCLatencySource 和 CDCLatencyTarget。如果出现表错误,请检查目标数据库的 控制表 (dmslogsawsdmsapplyexceptions)。对于关键业务表,审查表架构和数据,并设置适当的 错误处理任务设置。对于大表,在进行升级之前考虑 创建多个任务,以减少单个任务问题的影响。如果移动失败,捕获 AWS DMS 任务的恢复检查点,并使用恢复检查点创建新的仅 CDC 任务。对于使用场景,考虑使用 自动版本升级 选项,例如在创建复制实例时使用当前默认引擎版本。启用 AWS DMS 数据验证 以确保数据准确迁移,特别是在生产环境中。结论
AWS DMS 提供多种支持数据移动和迁移的方式。在升级至新版本的 AWS DMS 时,可以根据配置和业务需求选择不同的选项。您可以选择就地升级、使用带有 CDC 任务的恢复检查点、使用 AWS DMS Serverless 管理迁移,或将 AWS DMS 任务移动以最大限度减少停机时间,采用并行升级方法。侧面升级方法可以通过控制台、AWS CLI 或 AWS SDK (Boto3) 完成。通过遵循我们讨论的最佳实践并平衡不同升级行为与业务影响和技术要求,您可以顺利完成升级。
如果您有任何问题或建议,请在下面留言。
关于作者
Eddie Yao 是 AWS 的企业支持负责人。他指导 AWS 客户在云中构建和运行大规模生产工作负载。拥有十年以上的技术经验,涵盖从 Web 应用程序工程、咨询到数字平台解决方案架构等,Eddie 目前专注于媒体和娱乐行业及 AI/ML包括生成性 AI。
Aritra Biswas 是亚马逊网络服务的高级云支持专业工程师,也是 AWS DMS 的主题专家。他在关系数据库领域拥有十年以上的经验。在 AWS,他与服务团队、技术客户经理和解决方案架构师合作,帮助客户将数据库工作负载迁移到 AWS。工作之外,他喜欢打壁球,和家人朋友共度时光。
![Scott St Martin](https//d2908q01vomqb2cloudfrontnet/887309d048beef83ad3eabf2a79a64a389ab1c9f/2024/04