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

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

使用将您的 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 EC2 实例或Amazon Cloud9环境与您的 Amazon DBC 集群在同一 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

    • 适用于说明,输入您选择的描述。对于 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 (公开访问),请启用此选项。

  4. 选择创建复制实例

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

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

创建源终端节点

  1. 打开 Amazon DMS 控制台

  2. 在导航窗格中,选择 Endpoints(端点)

  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. 在导航窗格中,选择 Endpoints(端点)

  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 集群 任务状态应从 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 集群。