本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
您可以使用与 MongoDB 兼容的数据库作为 AWS DMS中同构数据迁移的源。在这种情况下,您的源数据提供者可以是本地、Amazon for MongoDB 数据库或亚马逊 EC2 DocumentDB(兼容 MongoDB)数据库。
有关支持的数据库版本,请参阅DMS 同构数据迁移的源数据提供程序。
以下各节描述了自行管理 MongoDB 数据库和托管的 Amazon DocumentDB 数据库的特定配置先决条件。 AWS
主题
使用自我管理的 MongoDB 数据库作为同构数据迁移的来源 AWS DMS
本节介绍如何配置托管在本地或 Amazon 实例上的 MongoDB 数据库。 EC2
检查源 MongoDB 数据库的版本。请确保它 AWS DMS 支持您的源 MongoDB 数据库版本,如中所述。DMS 同构数据迁移的源数据提供程序
要使用 MongoDB 源运行同构数据迁移,您可以创建具有根权限的用户账户,也可以仅在要迁移的数据库上创建具有权限的用户。有关创建用户的更多信息,请参阅使用 MongoDB 作为源时所需的权限 AWS DMS。
要将持续复制或 CDC 与 MongoDB 配合使用 AWS DMS ,需要访问 MongoDB 操作日志 (oplog)。有关更多信息,请参阅 为 CDC 配置 MongoDB 副本集。
有关 MongoDB 身份验证方法的信息,请参阅使用 MongoDB 作为源时的安全要求 AWS DMS。
将 MongoDB 作为源时,同构数据迁移支持 Amazon DocumentDB 支持的所有数据类型。
将 MongoDB 作为源时,要将用户凭证存储在 Secrets Manager 中,您需要使用其他类型的密钥类型以纯文本形式提供这些凭证。有关更多信息,请参阅 使用密钥访问 AWS Database Migration Service 端点。
以下代码示例演示了如何以纯文本形式存储数据库密钥。
{
"username": "dbuser",
"password": "dbpassword"
}
使用 Amazon DocumentDB 数据库作为同构数据迁移的来源 AWS DMS
本节介绍如何配置 Amazon DocumentDB 数据库实例,以作为同构数据迁移的源。
使用 Amazon DocumentDB 实例的主用户名作为与 MongoDB 兼容的源数据提供程序的用户账户,以在 AWS DMS中进行同构数据迁移。主用户账户具有允许它设置 CDC 所需的角色。如果使用主用户账户之外的账户,该账户必须具有根角色。有关创建用户作为根账户的更多信息,请参阅设置权限以使用 Amazon DocumentDB 作为源。
要开启逻辑复制,请将数据库参数组中的 change_stream_log_retention_duration
参数设置为适合事务工作负载的设置。更改此静态参数需要重启数据库实例才能生效。开始对所有任务类型(包括仅完全加载)进行数据迁移之前,请先为给定数据库中的所有集合(或只为选定的集合)启用 Amazon DocumentDB 更改流。有关启用 Amazon DocumentDB 更改流的更多信息,请参阅《Amazon DocumentDB 开发人员指南》中的启用更改流。
注意
AWS DMS 使用 Amazon DocumentDB 变更流捕获正在进行的复制期间的更改。如果 Amazon DocumentDB 在 DMS 读取记录之前将记录从更改流中清除,则您的任务将失败。建议设置 change_stream_log_retention_duration
参数,将更改至少保留 24 小时。
要使用 Amazon DocumentDB 进行同构数据迁移,请将用户凭证存储在 Secrets Manager 中的 Amazon DocumentDB 数据库的凭证下。
使用与 MongoDB 兼容的数据库作为同构数据迁移的源的特征
在完全加载阶段,您可以迁移 Amazon DocumentDB 支持的所有二级索引。
AWS DMS 并行迁移集合。同构数据迁移根据集合中每个文档的平均大小在运行时计算数据段,以实现最佳性能。
DMS 可以复制您在 CDC 阶段创建的二级索引。DMS 在 MongoDB 版本 6.0 中支持此特征。
DMS 支持嵌套级别大于 97 的文档。
使用与 MongoDB 兼容的数据库作为同构数据迁移的源的限制
文档不能有带
$
前缀的字段名称。AWS DMS 不支持时间序列集合迁移。
AWS DMS 在 CDC 阶段不支持
create
drop
、或rename collection
DDL 事件。AWS 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 的任务, AWS DMS 仅支持
immediate
启动模式。AWS DMS 不支持包含无效 UTF8 字符的文档。
AWS DMS 不支持分片集合。
使用与 MongoDB 兼容的数据库作为同构数据迁移的源的最佳实践
对于托管在同一 MongoDB 实例上的多个大型数据库和集合,建议您对每个数据库和集合使用选择规则,以将任务拆分为多个数据迁移任务和项目。您可以调整数据库和集合分区以获得出色性能。