本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用将您的 Amazon DocumentDB 集群从 3.6 升级到 4.0Amazon Database Migration Service
重要
Amazon DocumentDB 不遵循与 MongoDB 和 MongoDB 相同的支持生命周期 end-of-life 时间表不适用于 Amazon DocumentDB。目前没有计划 end-of-life 适用于 Amazon DocumentDB 3.6 以及你现有的 MongoDB 3.6 驱动程序、应用程序和工具,将继续与 Amazon DocumentDB 配合使用。
您可以使用将您的 Amazon DocumentDB 3.6 集群升级到 4.0,停机时间最短Amazon DMS.Amazon DMS是一项完全托管的服务,可将关系数据库和非关系数据库轻松迁移到 Amazon DocumentDB。
主题
第 1 步:启用变更流
要执行停机时间最短的迁移,Amazon DMS需要访问集群的变更流。Amazon DocumentDB 变更流提供按时间顺序排列的更新事件,这些事件在您的集群集合和数据库内发生。从变更流中读取启用Amazon DMS执行更改数据捕获 (CDC) 并将增量更新应用到目标 Amazon DocumentDB 集群。
要为特定数据库上的所有集合启用更改流,请使用 mongo shell 向您的 Amazon DocumentDB 集群进行身份验证,然后执行以下命令:
db.adminCommand({modifyChangeStreams: 1, database: "db_name", collection: "", enable: true});
第 2 步:修改更改流保留期限
接下来,根据您希望在变更流中保留变更事件的时间来修改更改流保留期。例如,如果你期望你的Amazon DMS从 Amazon DocumentDB v3.6 迁移到 v4.0 要花费 12 个小时,您应将更改流保留时间设置为大于 12 小时的值。Amazon DocumentDB 集群的默认保留期为三小时。您可以使用 Amazon DocumentDB 集群的变更流日志的保留时间修改为 1 小时到 7 天之间的任何时间Amazon Web Services Management Console或者Amazon CLI. 有关详细信息,请参考修改更改流日志保留期限。
第 3 步:迁移Migration
在 Amazon DocumentDB 4.0 集群上创建的索引与在 Amazon DocumentDB 3.6 集群上创建的索引相同。虽然Amazon DMS处理数据的迁移,它不迁移索引。要迁移索引,请使用 Amazon DocumentDB 索引工具从 Amazon DocumentDB 3.6 集群中导出索引。你可以通过创建 Amazon DocumentDB 工具的克隆来获得该工具 GitHub repo,按照中的说明操作README.md
以下代码从您的 Amazon DocumentDB v3.6 集群中转储索引:
python migrationtools/documentdb_index_tool.py --dump-indexes --dir ~/index.js/ --host docdb-36-xx.cluster-xxxxxxxx.us-west-2.docdb.amazonaws.com:27017 --tls --tls-ca-file ~/rds-ca-2019-root.pem --username user --password <password> 2020-02-11 21:51:23,245: Successfully authenticated to database: admin 2020-02-11 21:46:50,432: Successfully connected to instance docdb-36-xx.cluster-xxxxxxxx.us-west-2.docdb.amazonaws.com:27017 2020-02-11 21:46:50,432: Retrieving indexes from server... 2020-02-11 21:46:50,440: Completed writing index metadata to local folder: /home/ec2-user/index.js/
成功导出索引后,将这些索引还原到您的 Amazon DocumentDB 4.0 集群中。要恢复您在上一步中导出的索引,请使用 Amazon DocumentDB 索引工具。以下命令会从指定目录恢复 Amazon DocumentDB 4.0 集群中的索引。
python migrationtools/documentdb_index_tool.py --restore-indexes --dir ~/index.js/ --host docdb-40-xx.cluster-xxxxxxxx.us-west-2.docdb.amazonaws.com:27017 --tls --tls-ca-file ~/rds-ca-2019-root.pem --username user --password <password> 2020-02-11 21:51:23,245: Successfully authenticated to database: admin 2020-02-11 21:51:23,245: Successfully connected to instance docdb-40-xx.cluster-xxxxxxxx.us-west-2.docdb.amazonaws.com:27017 2020-02-11 21:51:23,264: testdb.coll: added index: _id
要确认是否正确还原了索引,请使用 mongo shell 连接到您的 Amazon DocumentDB 4.0 集群,然后列出给定集合的索引。请看下面的代码:
mongo --ssl --host docdb-40-xx.cluster-xxxxxxxx.us-west-2.docdb.amazonaws.com:27017 --sslCAFile rds-ca-2019-root.pem --username documentdb --password documentdb db.coll.getIndexes()
第 4 步:创建Amazon DMS复制实例
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon DMS复制实例连接并从您的源(在本例中为 Amazon DocumentDB 3.6 集群)读取数据,然后将其写入目标(Amazon DocumentDB 4.0 集群)。这些区域有:Amazon DMS复制实例可以执行批量加载和 CDC 操作。大部分这种处理发生在内存中。但是,大型操作可能需要部分缓冲到磁盘上。缓存事务和日志文件也会写入磁盘。迁移数据后,复制实例还会流式传输所有更改事件,以确保源和目标保持同步。
创建Amazon DMS复制实例:
-
打开 Amazon DMS 控制台
。 -
在导航窗格中,选择复制实例。
-
选择 Create replication instance (创建复制实例),并输入以下信息:
对于 Name (名称),输入您选择的名称。例如,
docdb36todocdb40
。-
适用于说明,输入您选择的描述。对于 listItem,Amazon DocumentDB 3.6 到Amazon DocumentDB 4.0
-
适用于实例类,根据您的需求选择尺寸。
-
适用于引擎版本,选择
3.4.1.
-
适用于Amazon VPC,选择容纳你的 Amazon DocumentDB 3.6 和 4.0 集群的 Amazon VPC。
-
适用于分配的存储空间(GiB),请使用默认值 50 GiB。如果您的工作负载写入吞吐量较高,请增加此值以匹配您的工作负载。
-
适用于多可用区,选择是如果您需要高可用性和故障转移支持。
对于 Publicly accessible (公开访问),请启用此选项。
选择创建复制实例。
第 5 步:创建Amazon DMS源终端节点
源终端节点用于您希望升级到 4.0 的 Amazon DocumentDB 3.6 集群。
创建源终端节点
-
打开 Amazon DMS 控制台
。 -
在导航窗格中,选择 Endpoints(端点)。
-
选择
Create endpoint
,然后输入以下信息:对于 Endpoint type (终端节点类型),请选择 Source (源)。
>对于终端节点标识符,请输入容易记住的名称,例如
docdb-source
.适用于源引擎,选择
docdb
.适用于服务器名称,输入您的 Amazon DocumentDB v3.6 集群的 DNS 名称。
适用于端口,输入您的 Amazon DocumentDB v3.6 集群的端口号。
适用于SSL 模式,选择
verify-full
.适用于CA 证书,选择添加新 CA 证书. 下载 新 CA 证书
以创建 TLS 连接捆绑包。适用于证书标识符,输入 rds-combined-ca-cn-bundle
. 对于 Import certificate file (导入证书文件),选择 Choose file (选择文件),然后导航到之前下载的.pem
文件。选择并打开此文件。选择导入证书,然后选择rds-combined-ca-bundle
来自 的选择证书下拉-
适用于用户名中,输入您的 Amazon DocumentDB v3.6 集群的主用户名。
-
适用于密码,输入您的 Amazon DocumentDB v3.6 集群的主密码。
-
适用于数据库名称中,输入要升级的数据库名称。
测试您的连接以验证其是否成功设置。
选择 Create Endpoint(创建端点)。
注意
Amazon DMS一次只能迁一个数据库。
第 6 步:创建Amazon DMS目标终端节点
目标终端节点适用于您的 Amazon DocumentDB 4.0 集群。
创建目标终端节点:
-
打开 Amazon DMS 控制台
。 -
在导航窗格中,选择 Endpoints(端点)。
-
选择 Create endpoint (创建终端节点),然后输入以下信息:
对于 Endpoint type (终端节点类型),请选择 Target (目标)。
对于 Endpoint identifier (终端节点标识符),请输入容易记住的名称,例如
docdb-target
。适用于源引擎,选择
docdb
.适用于服务器名称,输入您的 Amazon DocumentDB v4.0 集群的 DNS 名称。
适用于端口,输入您的 Amazon DocumentDB v4.0 集群的端口号。
适用于SSL 模式,选择
verify-full
.-
适用于CA 证书,选择现有的
rds-combined-ca-cn-bundle
来自的证书选择证书下拉。 -
适用于用户名中,输入您的 Amazon DocumentDB v4.0 集群的主用户名。
适用于密码,输入您的 Amazon DocumentDB v4.0 集群的主密码。
-
适用于数据库名称中,输入用于设置源终端节点的相同数据库名称。
-
测试您的连接以验证其已成功设置。
-
选择 Create Endpoint(创建端点)。
步骤 7:创建和运行迁移任务
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon DMS任务将复制实例与源实例和目标实例绑定。在创建迁移任务时,您可以指定源终端节点、目标终端节点、复制实例以及任何所需的迁移设置。网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon DMS可以创建具有三种不同迁移类型的任务:迁移现有数据、迁移现有数据并复制持续更改或仅复制数据更改。由于本演练的目的是在停机时间最短的情况下将 Amazon DocumentDB 3.6 集群升级到 Amazon DocumentDB 4.0,因此这些步骤利用该选项迁移现有数据和复制正在进行的更改。利用该选项,Amazon DMS 可在迁移现有数据时捕获更改。甚至在加载批量数据后,Amazon DMS 也会继续捕获和应用更改。最终,源数据库和目标数据库将保持同步,从而实现停机时间最少的迁移。
以下是创建迁移任务以实现最短停机时间迁移的步骤:
-
打开 Amazon DMS 控制台
。 -
在导航窗格中,选择任务。
-
选择 Create task (创建任务),然后输入以下信息:
对于 Task name (任务名称),请输入容易记住的名称,例如
my-dms-upgrade-task
。适用于复制实例,请选择您在中创建的复制实例第 3 步:创建Amazon Database Migration Service复制实例
适用于源终端节点,请选择您在中创建的源终端节点步骤 4: 创建Amazon Database Migration Service源终端节点
适用于目标终端节点,请选择您在中创建的目标终端节点第 5 步:创建Amazon Database Migration Service目标终端节点
-
适用于迁移类型,选择迁移现有数据并复制持续更改.
-
在任务设置部分,启用CloudWatch 圆木.
-
适用于表映射部分中,将所有内容保留为原定设置。这将确保迁移数据库中的所有集合。
-
适用于迁移任务启动配置,选择 A创建时自动执行. 这将在您创建迁移任务后自动启动迁移任务。
-
选择创建任务。
Amazon DMS现在开始将数据从 Amazon DocumentDB 3.6 集群迁移到您的 Amazon DocumentDB 4.0 集群 任务状态应从 Starting (正在启动) 更改为 Running (正在 您可通过在Amazon DMS控制台。几分钟/小时后(取决于迁移的大小),状态应从更改为加载完成,复制正在进行。这意味着Amazon DMS已完成将 Amazon DocumentDB 3.6 集群的完整负载迁移到 Amazon DocumentDB 4.0 集群,现在正在复制更改事件。

最终你的源和目标将保持同步。您可以通过运行来验证它们是否同步count()
操作以验证所有更改事件是否已迁移。
步骤 8:将应用程序终端节点更改为 Amazon DocumentDB 群集 4.0
在完全加载完成并且 CDC 流程持续复制后,您可以将应用程序的数据库连接终端节点从 Amazon DocumentDB 3.6 集群更改为 Amazon DocumentDB 集群 4.0 集群。