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

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

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

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

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

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

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

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

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

要使用 MongoDB 源运行同构数据迁移,您可以创建具有根权限的用户账户,也可以仅在要迁移的数据库上创建具有权限的用户。有关创建用户的更多信息,请参阅将 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。如果使用主用户账户之外的账户,该账户必须具有根角色。有关创建用户作为根账户的更多信息,请参阅设置权限以使用 Amazon DocumentDB 作为源

要开启逻辑复制,请将数据库参数组中的 change_stream_log_retention_duration 参数设置为适合事务工作负载的设置。更改此静态参数需要重启数据库实例才能生效。开始对所有任务类型(包括仅完全加载)进行数据迁移之前,请先为给定数据库中的所有集合(或只为选定的集合)启用 Amazon DocumentDB 更改流。有关启用 Amazon DocumentDB 更改流的更多信息,请参阅《Amazon DocumentDB 开发人员指南》中的启用更改流

注意

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阶段创建的二级索引。 DMS在 MongoDB 版本 6.0 中支持此功能。

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

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

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

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

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

  • 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 实例上的多个大型数据库和集合,建议您对每个数据库和集合使用选择规则,以将任务拆分为多个数据迁移任务和项目。您可以调整数据库和集合分区以获得出色性能。