使用与 MongoDB 兼容的数据库作为同构数据迁移的来源 Amazon DMS - Amazon 数据库迁移服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用与 MongoDB 兼容的数据库作为同构数据迁移的来源 Amazon DMS

您可以使用与 MongoDB 兼容的数据库作为中同构数据迁移的来源。 Amazon DMS在这种情况下,您的源数据提供者可以是本地、适用于 MongoDB 的 Amazon EC2 数据库或亚马逊 DocumentDB(兼容 MongoDB)数据库。

有关支持的数据库版本,请参见DMS 同构数据迁移的源数据提供程序

以下各节描述了自行管理 MongoDB 数据库和托管的 Amazon DocumentDB 数据库的特定配置先决条件。 Amazon

使用自我管理的 MongoDB 数据库作为同构数据迁移的来源 Amazon DMS

本节介绍如何配置托管在本地或 Amazon EC2 实例上的 MongoDB 数据库。

检查您的源 MongoDB 数据库的版本。请确保它 Amazon DMS 支持您的源 MongoDB 数据库版本,如中所述。DMS 同构数据迁移的源数据提供程序

要使用 MongoDB 源运行同构数据迁移,您可以创建一个具有 root 权限的用户帐户,也可以创建一个仅具有数据库迁移权限的用户。有关用户创建的更多信息,请参阅将 MongoDB 作为 Amazon DMS 的源时所需的权限

要将持续复制或 CDC 与 MongoDB 配合使用 Amazon DMS ,需要访问 MongoDB 操作日志 (oplog)。有关更多信息,请参阅为 CDC 配置 MongoDB 副本集

有关 MongoDB 身份验证方法的信息,请参阅。将 MongoDB 作为 Amazon DMS 源时的安全要求

对于 MongoDB 作为数据源,同构数据迁移支持 Amazon DocumentDB 支持的所有数据类型。

要将 MongoDB 作为来源,要将用户凭据存储在 Secrets Manager 中,您需要使用其他类型的密钥类型以纯文本形式提供这些凭据。有关更多信息,请参阅使用密钥访问 Amazon Database Migration Service 端点

以下代码示例演示了如何使用纯文本存储数据库密钥。

{ "username": "dbuser", "password": "dbpassword" }

使用 Amazon DocumentDB 数据库作为同构数据迁移的来源 Amazon DMS

本节介绍如何配置您的 Amazon DocumentDB 数据库实例以用作同构数据迁移的来源。

使用 Amazon DocumentDB 实例的主用户名作为兼容 MongoDB 的源数据提供程序的用户账户,以便在中进行同构数据迁移。 Amazon DMS主用户账户具有允许它设置 CDC 所需的角色。如果您使用主用户账户以外的账户,则该账户必须具有根角色。有关以 root 账户创建用户的更多信息,请参阅设置权限以使用 Amazon DocumentDB 作为源

要开启逻辑复制,请将数据库change_stream_log_retention_duration参数组中的参数设置为适合您的事务工作负载的设置。更改此静态参数需要您重启数据库实例才能生效。在开始迁移包括仅限满载在内的所有任务类型的数据之前,请为给定数据库中的所有馆藏启用 Amazon DocumentDB 更改流,或者仅为选定的馆藏启用 Amazon DocumentDB 更改流。有关为 Amazon DocumentDB 启用更改流的更多信息,请参阅亚马逊 Document DB 开发者指南中的启用更改流

注意

Amazon DMS 使用 Amazon DocumentDB 更改流捕获正在进行的复制期间的更改。如果 Amazon DocumentDB 在 DMS 读取记录之前将其从更改流中清空,则您的任务将失败。我们建议将change_stream_log_retention_duration参数设置为将更改保留至少 24 小时。

要使用 Amazon DocumentDB 进行同构数据迁移,请将用户凭证存储在 Secrets Manager 中的 Amazon DocumentDB 数据库凭证下。

使用兼容 MongoDB 的数据库作为同构数据迁移源的功能

  • 在满载阶段,您可以迁移 Amazon DocumentDB 支持的所有二级索引。

  • Amazon DMS 并行迁移集合。同构数据迁移根据集合中每个文档的平均大小在运行时计算数据段,以实现最佳性能。

  • DMS 可以复制您在 CDC 阶段创建的二级索引。在 MongoDB 6.0 版本中,DMS 支持此功能。

  • DMS 支持嵌套级别大于 97 的文档。

使用兼容 MongoDB 的数据库作为同构数据迁移源的限制

  • 文档不能有带$前缀的字段名。

  • Amazon DMS 不支持时间序列集合迁移。

  • Amazon DMS 在 CDC 阶段不支持createdrop、或 rename collection DDL 事件。

  • Amazon DMS 不支持字段集合中不一致的数据类型。_id例如,以下不支持的集合具有该_id字段的多种数据类型。

    rs0 [direct: primary] test> db.collection1.aggregate([ ... { ... $group: { ... _id: { $type: "$_id" }, ... count: { $sum: 1 } ... } ... } ... ]) [ { _id: 'string', count: 6136 }, { _id: 'objectId', count: 848033 } ]
  • 对于仅限 CDC 的任务, Amazon DMS 仅支持immediate启动模式。

  • Amazon DMS 不支持包含无效 UTF8 字符的文档。

  • Amazon DMS 不支持分片集合。

使用兼容 MongoDB 的数据库作为同构数据迁移源的最佳实践

  • 对于托管在同一 MongoDB 实例上的多个大型数据库和集合,我们建议您使用每个数据库和集合的选择规则在多个数据迁移任务和项目之间分配任务。您可以调整数据库和集合部门以获得最佳性能。