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

关于MongoDB mongosync

mongosync 二进制文件是 Mongosync 中使用的主节点 (primary node in the replica set)进程。mongosync 将数据从源集群迁移到目标集群。

mongosync 将数据从一个集群复制并写入到另一个集群,直到同步完成。您可以使用此工具在MongoDB集群之间执行一次性数据迁移,同时最短停机时间。

有关执行期间的 mongosync 和目标集群行为的更多信息,请参阅中间同步注意事项。

重要

在您对 commit 调用 mongosynccanWrite 成功返回 true 之前,目标集群上的已迁移集合不能用于接受应用程序读取或写入流量。请勿使用 mongosync 维护用于灾难恢复、分析或其他类似使用案例的从节点(secondary node from replica set)集群。

mongosync 通过state追踪其当前操作。 mongosync根据收到的请求进入不同状态。 当前的mongosync状态决定了您可以运行哪些API操作。

注意

大多数状态转换都是由于API调用而发生的。 例外情况是:

  • COMMITTINGCOMMITTED的转换。 有关更多信息,请参阅完成同步。

  • REVERSINGRUNNING的转换。 有关更多信息,请参阅反向同步。

要查看mongosync的当前状态,请使用/progress端点。

下图说明了mongosync状态和API操作之间的关系:

“mongosync”状态和API操作之间的关系图
点击放大

Frequently Asked Questions (FAQ)(常见问题解答 (FAQ))页面解答了用户提出的有关 mongosync 的问题。

您必须先创建与源集群和目标集群的初始连接,然后mongosync才能开始同步数据。 有关更多信息,请参阅连接mongosync

mongosync连接到源集群和目标集群时,同步进程进入IDLE状态。

要启动同步进程,请调用启动端点。

start端点进入RUNNING状态,此时mongosync将数据从源集群同步到目标集群。 如果您对源集群进行后续写入, mongosync会将这些操作应用于目标集群。

对于每个同步的源集合, mongosync都会在目标上创建相应的集合。

mongosync 临时更改目标集群中的某些已复制集合特征。 它在COMMIT状态期间将这些目标集群特征更改回源集群特征。 有关更多信息,请参阅集合特征更改。

RUNNING状态包括两个阶段:

在集合复制阶段, mongosync执行从源集群到目标集群的初始数据传输。 mongosync通过将源集合拆分为分区并将分区复制到相应的目标集合来执行此数据传输。

对于目标集群较小的迁移,集合复制阶段可能会耗尽目标集群的 CPU 和/或内存。对于总集合大小为 64 GB或更小到具有 4 或更少 CPU/vCPU 的目标集群的迁移,集合复制阶段向目标集群发出更少的并发写入。大于 64 GB 的迁移将继续使用默认写入并发。

要禁用此功能,请在启动或重新启动 mongosync 时指定显式负载级别

变更事件应用程序(CEA) 阶段在集合复制阶段结束后开始。

在 CEA 阶段,当您写入源集群时,mongosync 会对目标集群进行持续更改。

为了持续更新目标集群,mongosync 在源集群上打开变更流,并将收到的变更事件应用于目标集群。

当 CEA 阶段开始时, mongosync会应用在集合复制阶段收到的变更事件,然后再处理在 CEA 阶段收到的事件。

要暂停同步进程并进入PAUSED状态,请调用暂停端点。

要恢复暂停的同步进程并将mongosync返回到RUNNING状态,请调用恢复端点。

要完成源集群和目标集群之间的同步,请调用提交端点。

commit 端点会启动 COMMITTING 状态,此时 mongosync 会停止在源集群与目标集群之间迁移数据。

COMMITTING状态开始时, mongosync会检索提交时间戳,即对源集群进行最近一次操作的时间。

如果没有错误, mongosync会发送成功消息,并通过处理提交时间戳之前的事件来退出 CEA。 mongosync还会恢复mongosync在同步期间临时更改的集合特征。

上述进程完成后, mongosync进入COMMITTED状态。 COMMITTED状态表示切换进程已完成。

要反转已提交同步操作的方向,请调用反向端点。

reverse端点进入REVERSING状态。 mongosync交换源集群和目标集群,并继续应用变更事件。

如果反向同步成功, mongosync将进入RUNNING状态。 同步从原始同步作业的相反方向继续进行。

要学习;了解有关mongosync的详情,请参阅: