使用将您的 Amazon DocumentDB 集群从 3.6 升级到 4.0Amazon Database Migration Service - Amazon DocumentDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用将您的 Amazon DocumentDB 集群从 3.6 升级到 4.0Amazon Database Migration Service

重要

Amazon DocumentDB 不遵循与 MongoDB 相同的支持生命周期,蒙古数据库的生命周期结束时间表不适用于 Amazon DocumentDB。目前没有 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 步:迁移您的索引

在您的 Amazon DocumentDB 4.0 集群上创建与您在 Amazon DocumentDB 3.6 集群上拥有的相同的索引。虽然Amazon DMS处理数据迁移,它不会迁移索引。要迁移索引,请使用 Amazon DocumentDB 索引工具从 Amazon DocumentDB 3.6 集群中导出索引。您可以通过创建 Amazon DocumentDB 工具的克隆 GitHub 回购,并按照README.md. 您可以从 Amazon EC2 实例或Amazon Cloud9环境与您的 Amazon DocumentDB 集群在同一个 Amazon VPC 中运行。

以下代码转储您的 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复制实例:

  1. 打开 Amazon DMS 控制台

  2. 在导航窗格中,选择复制实例

  3. 选择 Create replication instance (创建复制实例),并输入以下信息:

    • 对于 Name (名称),输入您选择的名称。例如:docdb36todocdb40

    • 适用于说明中,输入您选择的描述。对于目录,Amazon DocumentDB 3.6 到 Amazon DocumentDB 4.0 复制实例。

    • 适用于实例类中,根据需求选择尺寸。

    • 适用于引擎版本中,选择3.4.1.

    • 适用于Amazon VPC中,选择存放您的 Amazon DocumentDB 3.6 和 4.0 集群的亚马逊 VPC。

    • 适用于分配的存储空间(GiB),请使用默认值 50 GiB。如果您具有较高的写入吞吐量工作负载,请增加此值以匹配您的工作负载。

    • 适用于多可用区中,选择如果您需要高可用性和故障转移支持。

    • 对于 Publicly accessible (公开访问),请启用此选项。

  4. 选择创建复制实例

第 5 步:创建Amazon DMS源终端节点

源终端节点用于您希望升级到 4.0 的 Amazon DocumentDB 3.6 集群。

创建源终端节点

  1. 打开 Amazon DMS 控制台

  2. 在导航窗格中,选择终端节点

  3. 选择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 集群的主密码。

    • 适用于数据库名称中,输入要升级的数据库名称。

  4. 测试您的连接以验证它是否已成功设置。

  5. 选择 Create Endpoint

注意

Amazon DMS一次只能迁移一个数据库。

第 6 步:创建Amazon DMS目标终端节点

目标终端节点适用于您的 Amazon DocumentDB 4.0 集群。

要创建目标终端节点:

  1. 打开 Amazon DMS 控制台

  2. 在导航窗格中,选择终端节点

  3. 选择 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 集群的主密码。

    • 适用于数据库名称中,输入用于设置源终端节点的相同数据库名称。

  4. 测试您的连接以验证它是否已成功设置。

  5. 选择 Create Endpoint

步骤 7:创建并运行迁移任务

网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon DMS任务将复制实例与源实例和目标实例绑定。在创建迁移任务时,您可以指定源终端节点、目标终端节点、复制实例以及任何所需的迁移设置。网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon DMS任务可以使用三种不同的迁移类型创建-迁移现有数据、迁移现有数据并复制持续更改或仅复制数据更改。由于本演示的目的是在最短的停机时间内将 Amazon DocumentDB 3.6 集群升级到 Amazon DocumentDB 4.0,因此这些步骤利用此选项来迁移现有数据并复制正在进行的更改。利用该选项,Amazon DMS 可在迁移现有数据时捕获更改。甚至在加载批量数据后,Amazon DMS 也会继续捕获和应用更改。最终,源数据库和目标数据库将保持同步,从而实现停机时间最少的迁移。

以下是创建迁移任务以实现最短停机时间迁移的步骤:

  1. 打开 Amazon DMS 控制台

  2. 在导航窗格中,选择任务

  3. 选择 Create task (创建任务),然后输入以下信息:

  4. 任务设置部分,启用CloudWatch 日志.

  5. 适用于表映射部分中,将所有内容保持在默认设置。这将确保迁移数据库中的所有集合。

  6. 适用于迁移任务启动配置中,选择 A自动创建. 一旦您创建迁移任务,这将自动启动迁移任务。

  7. 选择创建任务

Amazon DMS现在开始将数据从您的 Amazon DocumentDB 3.6 集群迁移到您的 Amazon DocumentDB 4.0 集群。任务状态应该从 Sunning (正在启动) 更改为 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 集群。