Docs 菜单
Docs 主页
/
MongoDB Cluster-to-Cluster Sync
/

限制

在此页面上

  • 一般限制
  • MongoDB Community Edition
  • 不支持的集合类型
  • 分片集群
  • 反转
  • 多个集群
  • 已筛选同步
  • 固定大小集合
  • 系统集合

警告

mongosync 不检查是否符合记录的限制条件。请确保您的应用程序不受这些限制的影响。在存在这些限制之一的情况下运行 mongosync,可能会导致对目标集群出现未定义的行为。

注意

有关 MongoDB Server 兼容性的信息,请参阅 MongoDB Server 版本兼容性。

  • 目标集群必须为空。

  • mongosync 不验证集群或环境是否已正确配置。

  • mongosync 运行时,其他客户端不得写入目标集群。

  • 如果禁用了写入阻止,则客户端必须先阻止写入到源集群,然后才能启动提交过程。

  • 不会复制 system.* 集合

  • 不支持字段名以美元符号 ($) 为前缀的文档。请参阅带句点和美元符号的字段名

  • 不支持无服务器集群。

  • 不支持 MongoDB 共享层级。

  • 不支持“可查询加密”。

  • 您无法同步已在相同字段定义唯一索引和非唯一索引的集合。

  • 在尝试使用 M10+ Atlas 集群运行 mongosync 之前,请禁用 Require Indexes for All Queries(需要所有查询的索引)选项。

  • mongosync 不会同步用户或角色。

  • mongosync 不会将同步期间在源集群上进行的applyOps操作复制到目标集群。

  • mongosync 必须使用primary读取偏好从源集群读取。

  • mongosync 不支持当前正在升级 MongoDB 版本的源集群或目标集群。

  • mongosync 不支持同步Atlas Search 索引。

  • mongosync 仅支持使用WiredTiger存储引擎的集群。

  • 不能同步其中任何文档具有空时间戳(如 Timestamp(0,0))的集合。

MongoDB 不会测试“社区构建中的集群到集群同步”,而且在大多数情况下,MongoDB 不支持“社区部署中的集群到集群同步”。如果您希望使用“MongoDB 社区版的集群到集群同步”,请联系 MongoDB 销售代表,讨论需求和个性化选项。

  • mongosync 不支持从分片集群同步到副本集。

  • mongosync 不支持同步到具有一个或多个仲裁节点的分片集群拓扑。

  • 从副本集同步到分片集群这一操作具有以下限制:

    • mongosync 允许用户重命名同步期间sharding.shardingEntries选项包含的集合,但有一些限制。有关详细信息,请参阅在同步期间重命名。

    • 如果您使用sharding.createSupportingIndexes选项,则同步期间将在目标集群上自动创建索引。之后无法在源集群上创建这些索引。

    • 如果要手动创建索引以支持分片键,则必须在mongosync启动之前或迁移完成且mongosync停止之后创建索引。

  • 在集合中,_id 字段必须在集群的所有分片中都是唯一的。请参阅分片集群和唯一索引了解详情。

  • 同步时,不能使用 movePrimary 命令重新分配主节点分片。

  • 没有用于区域配置的复制。mongosync 复制数据,但不继承区域。

  • 同步时无法添加或删除分片。

  • mongosync 只同步存在于所有分片上的索引。

  • mongosync 只同步所有分片上具有一致索引规范的索引。

    注意

    如要检查索引是否存在不一致,请参阅跨分片查找不一致的索引

  • 您必须在迁移的整个生命周期中停止分片源集群和目标集群上的负载均衡器。 要停止负载均衡器,请运行balancerStop命令并等待命令完成。

    注意

    停止负载均衡器后,请等待 15 分钟再启动 mongosync。这使集群有时间完成任何正在进行的数据块迁移。

  • 不得在源集群或目标集群上运行moveChunkmoveRange命令。

  • 同步时无法完善分片键。

  • 同步期间不支持源集群的reshardCollection操作。

  • 每个分片集合的最大索引数为 63 个,比默认限制(64 个)少一个。

  • mongosync 只支持同步具有默认排序规则设置的分片集合。

  • 如果旧源具有唯一的索引,而且这些索引部分分布在不同的分片上,反转可能会导致失败。在反转之前,请确保所有分片上都存在唯一的索引。

  • 源集群和目标集群的分片数量必须相同。当集群具有不同的拓扑或主要版本时,将无法进行反向同步。

  • mongosync 不支持将多个源集群同步到一个目标集群。

  • 一个集群不能同时是一个 mongosync 实例中的源集群和另一个 mongosync 实例中的目标集群。

  • 可逆同步不支持筛选功能。

  • 启动前,目标集群不能包含用户数据。

  • 目标集群在启动前不能包含 mongosync_reserved_for_internal_use 系统数据库。

  • 不能修改正在使用的筛选器。如需创建新的筛选器,请参阅:“替换现有筛选器”。

  • 您只能在某些情况下重命名集合。有关更多详情,请参阅:添加和重命名集合

  • 如果过滤器包含视图但不包含基本集合,则只有视图元数据会同步到目标集群。要包含视图文档,您还必须同步基本集合。

  • 不能在筛选器中指定系统集合或系统数据库。

  • 如需使用带有过滤功能的 $out 聚合阶段或 mapReduce 命令(当设置为创建或替换集合时),必须将过滤器配置为使用整个数据库。不能将过滤器限制在数据库内的集合上。

    有关更多信息,请参阅使用 mapReduce 和 $out 进行筛选

从 1.3.0 开始,“集群到集群同步”支持固定大小集合,但有一些限制。

同步期间,源集群上的固定大小集合可正常工作。

同步期间,目标集群上的固定大小集合会出现临时更改:

  • 文档数量没有上限。

  • 最大集合大小为 1PB。

mongosync 在提交期间恢复最大文档数量和最大文档大小的原始值。

Cluster-to-Cluster Sync 不会将系统集合复制到目标集群。

如果您对源集群发出 dropDatabase 命令,则此更改不会直接应用于目标集群。相反,Cluster-to-Cluster Sync 会删除目标集群上数据库中的用户集合和视图,但不会删除该数据库上的系统集合。

例如,在目标集群上:

  • 删除操作不会影响用户创建的 system.js 集合。

  • 如果您启用分析,则 system.profile 集合将保留。

  • 如果您在源集群上创建视图,然后删除数据库,则复制该删除操作将删除视图,但会留下一个空的 system.views集合。

在这些情况下,复制 dropDatabase 时会删除数据库中所有用户创建的集合,但会将其系统集合留在目标集群上。

后退

使用

来年

日志记录