Docs 菜单

Docs 主页MongoDB Cluster-to-Cluster Sync

限制

在此页面上

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

警告

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

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

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

    • mongosync 允许用户重命名 start 命令的 sharding.shardingEntries 选项在同步期间包含的集合。 要查看在 mongosync 运行期间重命名集合的限制,请参阅同步期间重命名

    • 在同步过程中使用 sharding.createSupportingIndexes 选项在目标集群上创建支持分片键的索引时,随后您将无法在源集群上创建这些索引。

      该索引必须在 mongosync 启动之前存在,或者在迁移完成且 mongosync 停止后创建。

  • 在集合中, _id字段必须在集群的所有分片中都是唯一的。有关更多详细信息,请参阅分片集群和唯一索引

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

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

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

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

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

    注意

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

  • 您必须停止分片源集群上的负载均衡器,直到 mongosync 完成集合复制阶段。

    注意

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

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

  • 同步时无法优化分片键。

  • 同步期间无法使用reshardCollection修改分片键。

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

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

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

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

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

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

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

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

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

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

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

  • 如果筛选器包含视图但不包含基本集合,则仅复制视图。

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

  • 要将$out聚合阶段或mapReduce命令(当设置为创建或替换集合时)与筛选一起使用,必须将筛选器配置为使用整个数据库。您不能将筛选器限制为数据库中的集合。

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

从1开始。 3 。 0 ,Cluster-to-Cluster Sync 支持固定大小集合,但有一些限制。

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

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

  • 文档数量没有上限。

  • 最大集合大小为 1PB。

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

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

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

例如,在目标集群上:

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

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

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

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

← 使用 mongosync 进行灾难恢复