Docs 主页 → MongoDB Cluster-to-Cluster Sync
限制
警告
mongosync
不检查是否符合记录的限制条件。请确保您的应用程序不受这些限制的影响。在存在这些限制之一的情况下运行 mongosync
,可能会导致对目标集群出现未定义的行为。
一般限制
注意
有关 MongoDB Server 兼容性的信息,请参阅 MongoDB Server 版本兼容性和支持。
目标集群必须为空。
mongosync
不验证集群或环境是否已正确配置。当
mongosync
运行时,其他客户端不得写入目标集群。如果禁用了写入阻止,则客户端必须先阻止写入到源集群,然后才能启动提交过程。
不会复制system.* 集合。
不支持字段名以美元符号 (
$
) 为前缀的文档。请参阅带句点和美元符号的字段名称。不支持无服务器集群。
不支持 MongoDB 共享层级。
不支持Queryable Encryption 。
您无法同步已在相同字段定义唯一索引和非唯一索引的集合。
在尝试使用
M10+
Atlas 集群运行mongosync
之前,请禁用 Require Indexes for All Queries(需要所有查询的索引)选项。mongosync
不会同步用户或角色。mongosync
不会将同步期间在源集群上进行的applyOps
操作复制到目标集群。mongosync
必须使用primary
读取偏好从源集群读取。
MongoDB Community Edition
MongoDB 不会测试“社区构建中的集群到集群同步”,而且在大多数情况下,MongoDB 不支持“社区部署中的集群到集群同步”。如果您希望使用“MongoDB 社区版的集群到集群同步”,请联系 MongoDB 销售代表,讨论需求和个性化选项。
不支持的集合类型
不支持时间序列集合。
不支持设置了expireAfterSeconds的集群化集合。
分片集群
mongosync
不支持从分片集群同步到副本集。从副本集同步到分片集群这一操作具有以下限制:
在集合中,
_id
字段必须在集群的所有分片中都是唯一的。有关更多详细信息,请参阅分片集群和唯一索引。同步时不能使用
movePrimary
命令重新分配主分片。没有用于区域配置的复制。
mongosync
复制数据,但不继承区域。同步时无法添加或删除分片。
mongosync
只同步存在于所有分片上的索引。mongosync
只同步所有分片上具有一致索引规范的索引。注意
要检查索引是否存在不一致,请参阅查找分片间不一致的索引。
您必须停止分片源集群上的负载均衡器,直到 mongosync 完成集合复制阶段。
注意
停止负载均衡器后,等待 15 分钟,然后再启动
mongosync
。这使集群有时间完成任何正在进行的数据段迁移。同步时无法优化分片键。
同步期间无法使用
reshardCollection
修改分片键。每个分片集合的最大索引数为63 ,比默认限制64少一个。
mongosync
仅支持同步具有默认排序规则设置的分片集合。
反转
如果旧源具有部分分布在各分片上的唯一索引,则反转可能会导致失败。在反转之前,确保所有分片上都存在唯一索引。
源集群和目标集群的分片数量必须相同。当集群具有不同的拓扑或主要版本时,将无法进行反向同步。
多个集群
mongosync
不支持将多个源集群同步到一个目标集群。一个集群不能同时作为一个
mongosync
实例中的源集群和另一mongosync
实例中的目标集群。
已筛选同步
可逆同步不支持筛选功能。
启动前,目标集群不能包含用户数据。
目标集群在启动前不能包含
mongosync_reserved_for_internal_use
系统数据库。不能修改正在使用的筛选器。如需创建新的筛选器,请参阅:“替换现有筛选器”。
您只能在某些情况下重命名集合。有关更多详情,请参阅:添加和重命名集合。
如果筛选器包含视图但不包含基本集合,则仅复制视图。
不能在筛选器中指定系统集合或系统数据库。
要将
$out
聚合阶段或mapReduce
命令(当设置为创建或替换集合时)与筛选一起使用,必须将筛选器配置为使用整个数据库。您不能将筛选器限制为数据库中的集合。有关更多信息,请参阅使用 mapReduce 和 $out 进行筛选。
固定大小集合
从1开始。 3 。 0 ,Cluster-to-Cluster Sync 支持固定大小集合,但有一些限制。
不支持
convertToCapped
。如果运行convertToCapped
,则mongosync
会退出并显示错误。cloneCollectionAsCapped
不受支持。
同步期间,源集群上的固定大小集合可正常工作。
同步期间,目标集群上的固定大小集合会出现临时更改:
文档数量没有上限。
最大集合大小为 1PB。
mongosync
在提交期间恢复最大文档数量和最大文档大小的原始值。
系统集合
Cluster-to-Cluster Sync 不会将系统集合复制到目标集群。
如果您对源集群发出dropDatabase
命令,此更改不会直接应用于目标集群。相反,Cluster-to-Cluster Sync 会删除目标集群上数据库中的用户集合和视图,但不会删除该数据库上的系统集合。
例如,在目标集群上:
删除操作不会影响用户创建的
system.js
集合。如果启用分析,则保留
system.profile
集合。如果在源集群上创建视图,然后删除数据库,复制删除操作会删除视图,但会留下空的
system.views
集合。
在这些情况下,复制 dropDatabase
时会删除数据库中所有用户创建的集合,但会将其系统集合留在目标集群上。