对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

限制

警告

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

您必须在整个迁移期间遵守这些限制,包括迁移暂停或停止时(如果要恢复迁移)。

  • mongosync 不支持在迁移期间更改主要版本或次要版本的就地服务器版本升级。mongosync 允许补丁版本升级。要学习;了解更多信息,请参阅服务器升级说明。

  • 目标集群必须为空。

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

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

  • 如果要启动提交进程,并且在使用enableUserWriteBlocking truestart端点时未将 设立为 ,则必须在启动提交进程之前阻止写入源集群。

  • 不会复制 system.* 集合

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

  • 不支持无服务器集群。

  • 不支持 MongoDB 共享层级。

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

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

  • 在尝试使用 M10+ Atlas 集群运行 mongosync 之前,请禁用 Require Indexes for All Queries 选项。

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

  • mongosync does not replicate applyOps operations made on the source cluster during sync to the destination cluster.

  • mongosync 必须使用 读取偏好(readprimary preference)从源集群读取。

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

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

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

  • 您无法将集合与任何具有空时间戳的文档同步,例如 6.0 之前的 Timestamp(0,0) 源集群。

  • mongosync 不支持具有重复字段名称的文档。 有关详细信息,请参阅MongoDB不支持重复的字段名称。

MongoDB不会使用社区版本测试 Mongosync,并且在大多数情况下, MongoDB不支持使用社区部署的 Mongosync。如果您想将 Mongosync 与MongoDB Community Edition一起使用,联系MongoDB销售代表,讨论要求和个性化选项。

  • 不支持时间序列集合。

  • 不支持设置了 expireAfterSeconds 的集群化集合。

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

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

  • mongosync doesn't support sync to or from global clusters.

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

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

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

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

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

  • The movePrimary command cannot be used to reassign the primary shard while syncing.

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

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

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

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

    注意

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

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

    注意

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

  • mongosync 不支持在执行期间运行命令transitionFromDedicatedConfigServer

  • You must not run the moveChunk and moveRange commands on the source or destination clusters.

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

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

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

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

  • 如果旧源具有唯一的索引,而且这些索引部分分布在不同的分片上,反转可能会导致失败。在反转之前,请确保所有分片上都存在唯一的索引。
  • 源集群和目标集群必须具有相同数量的分片。当集群具有不同的拓扑结构时,您无法进行反向同步。

  • 源集群和目标集群必须运行相同的MongoDB主要版本。

  • In order to reverse direction, mongosync requires that all unique indexes on the source cluster (except for _id) do not have legacy unique index keys.
  • mongosync 不支持将多个源集群同步到一个目标集群。

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

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

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

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

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

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

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

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

  • To use the $out aggregation stage or the mapReduce command (when set to create or replace a collection) with filtering, you must configure the filter to use the entire database. You cannot limit the filter to collections within the database.

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

从 1.3.0 开始,Mongosync 支持固定大小集合,但有一些限制。

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

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

  • 文档数量没有上限。

  • 最大集合大小为 1PB。

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

Mongosync 不会将系统集合复制到目标集群。

If you issue a dropDatabase command on the source cluster, this change is not directly applied on the destination cluster. Instead, Mongosync drops user collections and views in the database on the destination cluster, but it does not drop system collections on that database.

例如,在目标集群上:

  • The drop operation does not affect a user-created system.js collection.

  • If you enable profiling, the system.profile collection remains.

  • If you create views on the source cluster and then drop the database, replicating the drop removes the views, but leaves an empty system.views collection.

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

mongosync 1.17如果目标集群包含非空__mdb_internal_atlas 数据库, 及更早版本会返回错误。这是MongoDB Atlas使用的内部数据库。您可能会收到一条错误,指出"found existing data on the destination cluster; the destination cluster must be empty; please drop existing data on the destination and start the migration again"

为避免迁移失败,升级到 mongosync 1.18 或更高版本,这会自动忽略所有内部数据库。

mongosync does not support rolling index builds during migration. To avoid building indexes in a rolling fashion during migration, use one of the following methods to ensure that your destination indexes match your source indexes:

  • 迁移前在源上构建索引。

  • Build the index on the source during migration with a default index build.

  • 迁移后在目标上构建索引。

从 1.9 开始,mongosync 可以使用嵌入式验证器来确认集合从源集群成功同步到目标集群。

嵌入式验证程序在 mongosync 1.8 及更早版本中不可用。

有关其他验证方法,请参阅验证数据传输。

嵌入式验证程序具有以下限制:

  • mongosync 将验证者状态存储在内存中,这可能会导致大量内存开销。 要运行验证程序,mongosync 大约需要 10 GB内存,此外,每 1 万份文档需要额外 500 MB 内存。

  • 验证程序无法恢复。 如果用户停止或暂停同步,然后因任何原因再次启动 mongosync,验证进程将从头开始。 这可能会导致验证大大落后于迁移。

  • 如果在启用验证并将 buildIndexes设立为 never 的情况下开始同步,则当 mongosync 在源集群上找到TTL集合时,迁移将失败。 这种情况可能发生在您调用 /start 端点之后或更晚的时间,例如,用户在迁移过程中在源集群上创建了TTL索引。

    要同步TTL集合而不在目标集群上构建索引,您必须在禁用验证器的情况下开始同步。

  • 如果您从 1.9.0 之前的任何版本进行实时升级, mongosync 禁用嵌入式验证。

验证程序不会检查以下命名空间:

  • 固定大小集合

  • 具有TTL索引的集合,包括在迁移过程中添加或删除的TTL索引

  • 不使用默认的集合

  • 视图

验证程序不会检查以下集合功能:

  • 集合元数据

  • 索引

要验证上述数据和元数据,请为这些集合和集合功能编写额外检查的脚本。 有关详细信息,请参阅验证数据传输。

注意

从版本1.10 开始,验证程序会检查迁移期间. 60之前的源集群上发生的 DDL事件中的数据是否不一致。这是因为.6 0之前的迁移不支持DDL 事件。

要学习;了解详情,请参阅. 60之前的迁移限制。

从 1.10 开始,mongosync 支持运行早于 6.0 的MongoDB服务器版本的源集群进行迁移。 有关支持的迁移路径的信息,请参阅MongoDB Server版本兼容性。

以下限制应用于 6.0 迁移:

  • 迁移期间,源集群上不能执行会产生 DDL 事件的写入操作。以下事件不会发生:

    • collMod

    • create

    • createIndexes

    • drop

    • dropDatabase

    • dropIndexes

    • refineCollectionShardKey

    • rename

    • reshardCollection

    • shardCollection

    这包括可能创建新集合的操作,例如mapReduce$out$merge 。这还包括从插入中隐式创建的集合。在迁移期间,只能进行会产生增删改查事件的写入操作。

    注意

    允许在命名空间过滤之外的源集合上生成 DDL 事件的写入操作。

  • geoHaystack 不支持索引。

  • 不支持 /reverse 端点。您无法在reversible /start请求中启用 选项。

  • 您无法在 /start请求中启用enableUserWriteBlocking 选项。 确保在迁移期间不对源集群或目标集群进行任何写入。

  • 您无法启用createSupportingIndexes 分片参数。相反,应在源集群上创建索引以支持分片键。

  • 如果一个或多个分片上存在规格不一致或缺失的索引,mongosync 将返回错误。要检查索引是否存在不一致,请参阅查找分片间不一致的索引。

  • 源集群不能有孤立文档。要清除所有孤立文档,请在源集群上运行cleanupOrphaned 命令。