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

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

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

您可以使用 将 Amazon DocumentDB 3.6 集群升级到 4.0,并最大限度地减少停机时间AWS DMS。 AWS DMS 是一项完全托管的服务,可让您轻松地将关系数据库和非关系数据库迁移到 Amazon DocumentDB。

步骤 1:启用更改流

要执行最少停机时间的迁移, AWS DMS 需要访问集群的更改流。 Amazon DocumentDB 变更流提供按时间顺序排列的更新事件序列,这些事件在您的集群集合和数据库中发生。通过从变更流中读取, AWS DMS 可以执行更改数据捕获 (CDC) 并将增量更新应用于目标Amazon DocumentDB集群。

要为特定数据库上的所有集合启用变更流,请使用 mongo shell 对Amazon DocumentDB集群进行身份验证并执行以下命令:

db.adminCommand({modifyChangeStreams: 1, database: "db_name", collection: "", enable: true});

步骤 2:修改变更流保留期

接下来,根据您希望 在变更流中保留变更事件的时长修改变更流保留期。例如,如果您预计您的 AWS DMS 从 Amazon DocumentDB v3 迁移到 v4 需要 12 小时,则应将变更流保留设置为一个大于 12 小时的值。Amazon DocumentDB 集群的默认保留期为三小时。您可以使用 Amazon DocumentDB 或 将AWS 管理控制台集群的变更流日志保留期修改为 1 小时到 7 天。 AWS CLI有关更多详细信息,请参阅修改变更流日志保留期限。

步骤 3:迁移索引

在 Amazon DocumentDB 4.0 集群上创建与 Amazon DocumentDB 3.6 集群上相同的索引。虽然 AWS DMS 处理数据的迁移,但它不会迁移索引。要迁移索引,请使用 Amazon DocumentDB 索引工具从 Amazon DocumentDB 3.6 集群中导出索引。您可以通过创建工具 GitHub 存储库的克隆并按照中的Amazon DocumentDB说明操作来获取该工具README.md。您可以从 Amazon EC2 实例运行工具,或者从与您的 AWS Cloud9 Amazon VPC 集群运行相同的 Amazon DocumentDB 环境中运行工具。

以下代码转储 Amazon DocumentDB v3 集群中的索引:

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 Index Tool。以下命令从指定的目录还原 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:创建 AWS DMS 复制实例

AWS DMS 复制实例从源(在本例中为 Amazon DocumentDB 3.6 集群)连接和读取数据,并将其写入目标(Amazon DocumentDB 4.0 集群)。AWS DMS 复制实例可以执行批量加载和 CDC 操作。这种处理大部分在内存中发生。但是,大型操作可能需要在磁盘上进行一些缓冲。缓存事务和日志文件也会写入磁盘。在迁移数据后,复制实例还会流式传输任何更改事件,以确保源和目标同步。

要创建 AWS DMS 复制实例,请执行以下操作:

  1. 打开 AWS DMS 控制台

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

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

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

    • 对于 Description (描述),输入您选择的描述。对于 listitem,为 Amazon DocumentDB 3.6 到 Amazon DocumentDB 4.0 复制实例。

    • 对于 Instance class (实例类),根据您的需求选择大小。

    • 对于 Engine version (引擎版本),选择 3.4.1.

    • 对于 Amazon VPC ,选择包含您的 Amazon VPC 3.6 和 4.0 集群Amazon DocumentDB的 。

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

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

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

  4. 选择创建复制实例

步骤 5:创建 AWS DMS 源终端节点

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

创建源终端节点

  1. 打开 AWS DMS 控制台

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

  3. 选择 Create endpoint 并输入以下信息:

    • 对于 Endpoint type (终端节点类型),请选择 Source (源)

    • >对于 Endpoint identifier (终端节点标识符),请输入一个容易记住的名称,例如 docdb-source

    • 对于 Source engine (源引擎),选择 docdb

    • 对于 Server name (服务器名称),输入 Amazon DocumentDB v3 集群的 DNS 名称。

    • 对于 Port (端口),输入您的 Amazon DocumentDB v3 集群的端口号。

    • 对于 SSL mode (SSL 模式),选择 verify-full

    • 对于 CA certificate (CA 证书),选择 Add new CA certificate (添加新的 CA 证书)。下载新 CA 证书以创建 TLS 连接捆绑。对于 Certificate identifier (证书标识符),输入 rds-combined-ca-cn-bundle。对于 Import certificate file (导入证书文件),选择 Choose file (选择文件),然后导航到之前下载的 .pem 文件。选择并打开此文件。选择 Import certificate (导入证书),然后从 rds-combined-ca-bundleChoose a certificate (选择证书 下拉列表中选择

    • 对于 Username (用户名),输入 Amazon DocumentDB v3 集群的主用户名。

    • 对于 Password (密码),输入 Amazon DocumentDB v3 集群的主密码。

    • 对于 Database name (数据库名称),输入您要升级的数据库名称。

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

  5. 选择 Create Endpoint

注意

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

步骤 6:创建 AWS DMS 目标终端节点

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

创建目标终端节点:

  1. 打开 AWS DMS 控制台

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

  3. 选择 Create endpoint (创建终端节点),然后输入以下信息:

    • 对于 Endpoint type (终端节点类型),请选择 Target (目标)

    • 对于 Endpoint identifier (终端节点标识符),请输入容易记住的名称,例如 docdb-target

    • 对于 Source engine (源引擎),选择 docdb

    • 对于 Server name (服务器名称),输入 Amazon DocumentDB v4 集群的 DNS 名称。

    • 对于 Port (端口),输入您的 Amazon DocumentDB v4 集群的端口号。

    • 对于 SSL mode (SSL 模式),选择 verify-full

    • 对于 CA certificate (CA rds-combined-ca-cn-bundle 证书),请从 Choose a certificate (选择证书) 下拉列表中选择现有证书

    • 对于 Username (用户名),输入您的 Amazon DocumentDB v4 集群的主用户名。

    • 对于 Password (密码),输入 Amazon DocumentDB v4 集群的主密码。

    • 对于 Database name (数据库名称),输入用于设置源终端节点的相同数据库名称。

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

  5. 选择 Create Endpoint

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

AWS DMS 任务将复制实例与您的源和目标实例绑定。在创建迁移任务时,您可以指定源终端节点、目标终端节点、复制实例和任何所需的迁移设置。可以使用三种不同的迁移类型创建 AWS DMS 任务:迁移现有数据、迁移现有数据并复制持续更改或仅复制数据更改。由于本演练的目的是将 Amazon DocumentDB 3.6 集群升级到 Amazon DocumentDB 4.0 并最大限度地减少停机时间,因此这些步骤将使用 选项迁移现有数据并复制持续更改。利用该选项,AWS DMS 可在迁移现有数据时捕获更改。甚至在加载批量数据后,AWS DMS 也会继续捕获和应用更改。最终,源数据库和目标数据库将保持同步,从而实现停机时间最少的迁移。

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

  1. 打开 AWS DMS 控制台

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

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

  4. Task Settings (任务设置) 部分中,启用 CloudWatch logs (CloudWatch日志)。

  5. 对于 Table mappings (表映射) 部分,保留所有内容的默认设置。这将确保迁移数据库中的所有集合。

  6. 对于 Migration task startup configuration (迁移任务启动配置),选择 automaticly on create (在创建时以 automaticly (以身份验证方式)。这将在您创建迁移任务后自动启动它。

  7. 选择创建任务

AWS DMS 现在开始将数据从 Amazon DocumentDB 3.6 集群迁移到 Amazon DocumentDB 4.0 集群。任务状态应从 Starting (正在启动) 更改为 Running (正在运行)。您可以通过在 AWS DMS 控制台中选择 Tasks (任务) 来监控进度。几分钟/小时 (具体取决于迁移大小) 后,状态应从 更改为 Load complete,复制持续进行。这意味着, AWS DMS 已完成将 Amazon DocumentDB 3.6 集群完全加载到 Amazon DocumentDB 4.0 集群的过程,现在正在复制更改事件。

最终,您的源和目标将同步。您可以通过对集合运行 count() 操作以验证所有更改事件是否已迁移,以验证它们是否同步。

步骤 8:将应用程序终端节点更改为Amazon DocumentDB集群 4.0

在完全加载完成并且 CDC 过程正在持续复制后,您已准备好将应用程序的数据库连接终端节点从 Amazon DocumentDB 3.6 集群更改为 Amazon DocumentDB 集群 4.0 集群。