使用 AWS DMS 升级您的 Amazon DocumentDB 集群 数据库博客

使用AWS DMS升级Amazon DocumentDB集群

作者:Murali Sankar、Cheryl Joseph和Sourav Biswas 2023年10月24日 高级300,Amazon DocumentDB,AWS数据库迁移服务,技术如何做

关键要点

升级Amazon DocumentDB集群时,保证数据持续性至关重要。AWS数据库迁移服务DMS为数据迁移提供便捷解决方案,可最大限度减少停机时间。迁移过程需考虑目标集群的配置、低版本特性的缺失以及更改流的设置。

在快速发展的数字环境中,企业依赖数据存储来管理关键信息,因此它们的顺畅运行至关重要。随着技术的发展,应用程序和承载这些企业的数据库变得愈加重要。这就要求定期进行升级,以维护最佳性能和安全性。尽管升级提供了增强的功能,但在此过程中确保无间断操作是一项挑战。

在本文中,我们探讨了Amazon DocumentDB兼容MongoDB版本升级路径,重点关注从Amazon DocumentDB 36/40升级到50的基本注意事项,以及如何使用AWS数据库迁移服务AWS DMS进行升级。

升级路径

Amazon DocumentDB提供多种升级路径,以满足不同需求和场景,灵活且选择多样,以确保高效的升级过程。

截至目前,您可以使用命令行工具如mongodump和mongorestore来升级Amazon DocumentDB集群。mongodump工具创建数据库的二进制备份,接着通过mongorestore工具将备份恢复到新的Amazon DocumentDB 50集群。有关更多详情,请参考数据备份、恢复、导入和导出。备份和恢复的时间取决于数据集的大小,若需升级大型集群可能会导致更长的停机时间。此方法适合低环境开发和测试以及在有足够维护窗口的小型到中型数据集时使用。

另外,Amazon DocumentDB提供数据可移植性,并通过AWS DMS支持数据迁移。AWS DMS是一种托管迁移服务,可帮助您在AWS中及迁移数据库工作负载,停机时间最少。

AWS DMS简化了从早期版本Amazon DocumentDB、关系数据库和非关系数据库迁移到目标Amazon DocumentDB集群的过程。使用AWS DMS,您无需安装代理或更改源数据库;可以在AWS管理控制台上管理和配置它。AWS DMS是一种托管服务,可以执行以下操作:

将现有数据从源数据库迁移到目标数据库复制持续的数据库更改

前提条件

我们假设您具备以下前提条件:

关于Amazon DocumentDB和AWS DMS的基础知识适当的权限以与您的AWS账户中的资源进行交互

此解决方案涉及设置和使用AWS资源,因此会产生您账户中的费用。有关更多信息,请参阅AWS定价。我们强烈建议您在非生产实例中设置此环境,并在正式投入生产前进行端到端的验证。

发现

升级到更高版本的Amazon DocumentDB集群时,请检查任何被弃用的特性和操作符,或用法变更。确保在新版本上运行应用程序,并确认其行为和性能与以前版本相同,除非对应用程序有明确的修改。

目标集群考量

作为迁移的最佳实践,我们建议在迁移期间对目标集群进行增大,再在验证过程中减小规模。在实际迁移之前,需通过试验验证缩放的程度以及此操作对整体迁移时间的影响。

使用AWS DMS升级

升级需要一种有效的机制来准确同步数据并以最短时间切换到目标集群。AWS DMS通过两个关键组件实现了这一点:

全量加载 您可以使用AWS DMS复制整个集群或特定集合。为实现更快的迁移时间,全量加载可以同时同步多个集合,并通过使用AWS DMS的分段功能并行化加载过程。更改数据捕获 完成初始数据加载后,您需要保持源和目标集群同步,直到实际切换。AWS DMS更改数据捕获CDC利用Amazon DocumentDB的更改流确保所有更改都被镜像到目标Amazon DocumentDB集群。

在源集群上启用更改流

为了进行升级,AWS DMS需要访问源集群的更改流,以提供按时间排序的更新事件序列。更改流使AWS DMS能够执行CDC并将增量更改应用到目标Amazon DocumentDB集群。请在源集群上运行以下命令,适当替换数据库和集合名称:

DbadminCommand({modifyChangeStreams 1 database ltDBNamegt collectionltCollection Namegt enable true})

请对每个要复制的集合重复此操作。

更新更改流保留时间

根据您的交易、网络连接性和变化频率,可以适当设置日志保留时间。更改流日志保留时间可以设置为1小时到7天之间的值,默认值为3小时。例如,如果您预计使用AWS DMS进行Amazon DocumentDB集群迁移需要12小时,则应将更改流保留设置为1824小时,以考虑其他操作开销。为了简化,您可以选择最大保留时间。如果将日志保留设置为较低值,可能会导致在目标DocumentDB集群中丢失交易。

您可以通过修改与集群相关的集群参数组中的changestreamlogretentionduration参数值来设置更改流保留。若使用AWS命令行界面AWS CLI,请运行以下命令:

aws docdb modifydbclusterparametergroup dbclusterparametergroupname sampleparametergroup parameters ParameterName=changestreamlogretentionduration ParameterValue=ltparametervaluegtApplyMethod=immediate

请注意,更改流会涉及到I/O和存储成本。有关更多详细信息,请参考Amazon DocumentDB兼容MongoDB定价。因此,请确保在迁移完成后关闭源集群中的更改流。

在目标集群中创建索引

您可以使用Amazon DocumentDB索引工具创建目标集群中的索引,以与源集群中的索引相匹配。索引应在数据加载之前创建。加载数据后生成索引可能导致处理时间延长。

首先,使用以下命令从源集群中导出索引:

python migrationtools/documentdbindextoolpy dumpindexes uri mongodb//sampleuseruserpassword@samplesourceclusternodeuseast1docdbamazonawscom27017/ tls=trueamptlsCAFile=globalbundlepemampreplicaSet=rs0ampreadPreference=secondaryPreferredampretryWrites=false dir /indexjs/

成功导出索引后,您可以在目标集群中恢复这些索引:

python migrationtools/documentdbindextoolpy restoreindexes uri mongodb//sampleuseruserpassword@sampledestinationclusternodeuseast1docdbamazonawscom27017/ tls=trueamptlsCAFile=globalbundlepemampreplicaSet=rs0ampreadPreference=secondaryPreferredampretryWrites=false dir /indexjs/

要确认索引是否正确恢复,请在mongo shell中运行以下命令,依照数据库和集合名称进行替换:

ltDBNamegtltCollection NamegtgetIndexes()

创建复制实例

AWS DMS复制引擎是运行在复制实例上的核心软件,执行迁移任务。引擎版本应为351或更高。

AWS DMS始终在VPC中创建复制实例。您可以指定复制实例所在的VPC。您可以选择默认VPC,也可以创建新VPC。为了性能、可靠性和安全性,AWS DMS复制实例通常放置在目标VPC中,而不是源VPC中。确保为复制实例的VPC分配的弹性网络接口关联安全组。同时,确保该安全组的规则允许所有端口的出站流量。

为确保您的复制实例拥有足够的资源进行迁移,请检查实例的CPU、内存、交换文件和I/O性能使用情况。有关监控的更多信息,请参阅AWS数据库迁移服务指标。

要创建复制实例,请完成以下步骤。有关完整说明,请参见创建AWS DMS复制实例。

在AWS DMS控制台中,选择导航窗格中的复制实例。创建新的复制实例。提供名称、可选ARN和可选描述。选择您的实例类型和引擎版本。

配置AWS DMS端点

AWS DMS任务是进行实际迁移的地方。您可以指定整个集合或模式,或选择您偏好的集合。AWS DMS使用端点来访问源和目标数据库并将数据从源迁移到目标端点。完成以下步骤以在复制实例中创建源端点和目标端点:

使用 AWS DMS 升级您的 Amazon DocumentDB 集群 数据库博客在AWS DMS控制台中,选择导航窗格中的迁移数据,然后选择端点。选择创建端点。

对于端点类型,选择源端点。在端点标识符中,输入您端点的名称。对于源引擎,选择Amazon DocumentDB兼容MongoDB。对于对端点数据库的访问,选择手动提供访问信息并输入源服务器名称、端口、用户名和密码。

如果您在DocumentDB集群中启用了TLS,请将安全套接层执行类型配置为verifyfull,并添加与您的集群关联的CA证书。

您可以在Amazon DocumentDB集群的连接与安全性选项卡中获取这些信息。

展开测试端点连接部分。指定您的VPC和复制实例。选择运行测试。

加速器apk测试成功完成后,选择创建端点。重复这些步骤以创建目标端点选择目标端点作为端点类型。

创建AWS DMS迁移任务

迁移任务向复制实例指示需将哪些数据复制到目标集群。完成以下步骤以创建AWS DMS迁移任务:

在AWS DMS控制台中,选择导航窗格中的迁移数据,然后选择数据库迁移任务。选择创建任务。

输入任务标识符。选择您创建的复制实例。输入源和目标端点。对于迁移类型,选择迁移现有数据并复制持续更改。

对于任务设置,选择在目标上删除表。对于任务日志,选择开启CloudWatch日志。在表映射部分,选择添加新选择规则。对于源名称,输入您的数据库名称。对于源表名称,输入您的集合名称。

您可以使用特定名称或通配符匹配来选择多个集合和数据库。

保持启用迁移评估未勾选。

对于大型表,考虑将其拆分为单独的任务,并使用分段功能。您可以使用AWS DMS分段分析器生成手动分段边界。

选择创建任务。

几分钟后,您应能看到任务以“加载完成,复制正在进行”的状态运行。要检查数据迁移的进度,请在迁移任务中检查表的统计信息标签。

监控

您可以使用Amazon CloudWatch日志监控AWS DMS任务的进度和相关资源使用情况。CPU、内存和I/O使用情况等指标在成功迁移中起着关键作用。有关更多详细信息,请参考AWS DMS关键故障排除指标和性能增强工具。

验证

要执行数据验证,您可以使用Amazon DocumentDB DataDiffer工具,该工具提供数据计数和内容的检查。请注意,此过程可能会耗时,因此在规划阶段分配足够的时间是很重要的。或者,如果您有可用的客户数据验证应用程序,您也可以考虑使用它。DataDiffer工具只是作为示例提供。

如果源与目标之间存在不匹配,可以启用审计。但请注意,这可能产生成本和性能的权衡。

考虑在源集群和目标集群上启用审计日志,以检测数据不匹配并隔离未按预期工作的操作。需要注意的是启用审计日志可能会消耗大量资源。因此,在生产环境中仅在绝对必要时谨慎使用,以最小化对性能的影响。启用集群的审计时需经过两个步骤:

修改参数组中的auditlogs参数为all。auditlogs参数是一个用逗号分隔的事件列表。启用Amazon DocumentDB将日志导出到CloudWatch。以下代码修改集群 samplecluster 并启
亚马逊 MWAA 的灾难恢复策略

亚马逊 MWAA 的灾难恢复策略

Amazon MWAA 灾难恢复策略 第二部分由 Chandan Rupakheti 和 Parnab Basak 于 2024 年 6 月 17 日发表于 Amazon EventBridge、Amazon Managed Workflows for Apache Airflow (Amazon ...

使用任务分解进行代理工作流,在 Amazon Bedrock 上使用生成式 AI 重新定义个性化 机

使用任务分解进行代理工作流,在 Amazon Bedrock 上使用生成式 AI 重新定义个性化 机

用生成性 AI 在 Amazon Bedrock 上重新定义个性化体验关键要点背景与目标:本文章探讨如何利用生成性 AI 和任务分解方法,在 Amazon Bedrock 上实现个性化客户体验。解决方案框架:通过一个虚构的咨询公司 OneCompany Consulting 来展示自动化个性化网站内...

订阅邮箱