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

常见问题解答

此页面提供了我们遇到的一些常见问题的回答。如果您还有其他问题,请联系 MongoDB 支持部门。

是的,您可以按照“同步期间重新配置” mongosync中的步骤,在迁移期间调整集群工作负载级别。

mongosync 在同步期间对从源到目标的写入进行组合和重新排序,并临时修改集合特征。因此,mongosync 无法保证目标在同步运行时的任何时间点与源匹配,包括源的过时版本,即使同步暂停也是如此。要安全地接受流向目标集群的流量,请等待迁移到commit。要学习;了解更多信息,请参阅中间同步注意事项。

在同步期间对目标集群执行写入会导致未定义的行为。 默认下,mongosync 会阻止对目标集群的写入。 要学习;了解有关写入阻塞的更多信息,请参阅写入阻塞和 start

提交后,只有当 canWritetrue 时,才能安全地写入目标集群。 要检查 的值,运行canWrite progress端点。

要学习;了解有关同步期间允许的读取和写入的更多信息,请参阅读取和写入。

注意

mongosync 进行同步时,目标集群上的索引构建被视为写入。

No, you can't currently maintain a Disaster Recovery cluster with mongosync, since mongosync must commit in order to safely accept traffic to the destination cluster. For more information, see Can I perform reads or writes to my destination cluster while mongosync is syncing?.

以下因素可能会导致目标集群上的索引大小增加:

  • mongosync 在迁移期间插入和删除数据,这可能会导致数据在磁盘上存储效率低下。

  • By default, mongosync builds indexes before copying data. mongosync copies data in _id order. If an index is not correlated with _id, the index size can become large. For more information, see the MongoDB Manual FAQ: Indexes page.

使用以下方法来缓解索引大小的增加:

  • 重新启动迁移,并将buildIndexes 参数设立为never 。迁移完成后,在目标集群上手动构建索引。

  • After the migration, perform a rolling initial sync on the destination cluster.

  • 迁移后,在目标集群上运行压缩(数据库命令)。这会重建索引并将不需要的磁盘空间释放给操作系统,但可能会影响集群性能。

是的, mongosync可以在自己的硬件上运行。 mongosync不必在托管 MongoDB 实例的服务器上运行。 当mongosync在自己的硬件上运行时,它可以使用与源集群或目标集群上的操作系统不同的操作系统 (OS)。

对于大多数迁移,目标集群的硬件规格应高于源集群,包括以下属性:

  • CPU

  • 内存

  • Disk I/O

这些硬件规格确保目标集群可以处理mongosync 写入,并且同步可以跟上源集群的工作负载。

目标集群必须有足够的磁盘存储,以容纳正在迁移的逻辑数据大小以及初始同步中的目标oplog条目。 示例,要迁移10 GB的数据,目标集群必须至少有 10 GB用于数据,另外 10 GB用于初始同步中的插入oplog条目。

要使用嵌入式验证,目标上必须有更大的oplog 。如果启用嵌入式验证程序并减小目标oplog的大小,则嵌入式验证程序可能无法跟上,从而导致 mongosync 出错。

如果需要减少目标oplog条目的开销并且嵌入式验证程序已禁用,则可以:

  • Use the oplogSizeMB setting to lower the destination cluster's oplog size.

  • Use to oplogMinRetentionHours setting to lower or remove the destination cluster's minimum oplog retention period.

mongosync 将源集群oplog中的操作应用于目标集群上的数据。 当mongosync未应用的操作滚动源集群上的oplog时,同步将失败并且mongosync退出。

注意

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

在初始同步期间,由于会同时复制文档, mongosync可能会以较慢的速度应用操作。 初始同步后, mongosync可以更快地应用更改,并且更有可能在oplog中保持接近源集群上发生的实时写入的位置。

If you anticipate syncing a large data set, or if you plan to pause synchronization for an extended period of time, you might exceed the oplog window. Use the oplogSizeMB setting to increase the size of the oplog on the source cluster.

mongosync 需要readConcern: "majority"writeConcern: "majority"。

如果readConcern不是majoritymongosync将返回错误:

Invalid URI option, read concern must be majority

如果writeConcern不是majoritymongosync将返回错误:

Invalid URI option, write concern must be majority

mongosync 接受所有其他连接string选项。

mongosync 支持网络压缩并默认启用。但是,您的集群配置必须股票至少一个通用压缩器。

For more information about network compression configuration options, see the --networkMessageCompressors option in the Database Manual.

mongosync 使用标准MongoDB连接string连接到源集群和目标集群。

支持LDAP和 X509 。有关可用的身份验证选项,请参阅在自管理部署上进行身份验证。

mongosync 不会在出错时自动重启。 但是,您可以写入脚本或使用操作系统的进程管理器(示例systemd )来重新启动mongosync进程。

mongosync二进制文件是无状态的。 用于重新启动的元数据存储在目标集群上。

如果mongosync在同步期间不可用,则可以恢复mongosync操作。 当mongosync再次可用时,使用相同参数重新启动mongosync进程。 mongosync会在mongosync不可用时从停止处恢复操作。

注意

mongosync 1.7.3开始, 恢复或重新启动同步操作时, mongosync可能至少需要两分钟才能响应。 在此期间,对progress端点的任何调用都可能失败。 如果progress调用失败,可以安全地重试。

是的,副本集可以有仲裁节点。 源副本集必须具有超过2个非仲裁节点,并且您必须从非仲裁节点进行同步。 使用源集群的连接string为非仲裁数据承载节点指定读取偏好

在初始同步或应用程序变更事件期间,如果源集群上存在慢速读取操作或目标集群上存在慢速写入操作,则可能会出现慢操作警告。该警告可能表示源集群或目标集群的网络拥塞或资源紧张。

虽然这些警告本身并不表示出现故障,但缓慢的操作可能会导致mongosync操作超时错误和迁移失败。

如果看到慢速运行警告,请检查源集群和目标集群上的 CPU、内存和网络使用情况。 如果集群配置不足以满足您的需求,请考虑升级集群硬件。

不会,包含“错误”或“故障”字样的日志显示的是非致命错误,并不表示您需要提前停止mongosync 。 这些日志并不表明mongosync正在发生故障或正在损坏数据。 如果发生致命错误, mongosync会停止同步并写入致命错误日志条目。

重复密钥错误是同步进程中的正常现象。 在以下情况下,可能会出现这些错误:

  • mongosync启动后,您可以在源集群上插入文档。 mongosync可以直接复制文档,并稍后冗余地应用该文档的插入更改事件。

  • 停止并恢复mongosync 。 这可能会导致mongosync重新启动时出现重复插入。

  • mongosync 遇到暂时性错误,并重新尝试可能已经成功的插入操作。

致命错误表示必须更正并需要重新启动迁移的问题。 解决错误后,删除目标集群上的所有迁移数据,包括mongosync_reserved_for_internal_use数据库。 然后,重新启动mongosync并开始新的迁移。

Mongosync 支持将TTL索引从源集群同步到目标集群。

不可以,您无法配置 mongosync 以在目标分片集群上自定义数据块分布。 mongosync 在初始化期间对每个集合进行采样,以确定迁移后如何在目标集群的分片之间有效地分发文档。

给本页内容打分