mongosync 二进制文件不支持用于非正版MongoDB部署,也不对其进行测试。 虽然这些工具可能适用于这些部署,但不保证兼容性。mongosync 二进制文件是 Mongosync 中使用的主节点 (primary node in the replica set)进程。mongosync 将数据从源集群迁移到目标集群。
mongosync 将数据从一个集群复制并写入到另一个集群,直到同步完成。您可以使用此工具在MongoDB集群之间执行一次性数据迁移,同时最短停机时间。
有关执行期间的 mongosync 和目标集群行为的更多信息,请参阅中间同步注意事项。
重要
您在 mongosync 上调用 commit 并且 canWrite 成功返回 true 之前,目标集群不能用于接受应用程序的读取或写入流量。请勿使用 mongosync 来维护灾难恢复集群。
mongosync 通过state追踪其当前操作。 mongosync根据收到的请求进入不同状态。 当前的mongosync状态决定了您可以运行哪些API操作。
注意
要查看mongosync的当前状态,请使用/progress端点。
下图说明了mongosync状态和API操作之间的关系:
Frequently Asked Questions (FAQ)(常见问题解答 (FAQ))页面解答了用户提出的有关 mongosync 的问题。
详情
连接源集群和目标集群
您必须先创建与源集群和目标集群的初始连接,然后mongosync才能开始同步数据。 有关更多信息,请参阅连接mongosync 。
当mongosync连接到源集群和目标集群时,同步进程进入IDLE状态。
开始同步
要启动同步进程,请调用启动端点。
start端点进入RUNNING状态,此时mongosync将数据从源集群同步到目标集群。 如果您对源集群进行后续写入, mongosync会将这些操作应用于目标集群。
对于每个同步的源集合, mongosync都会在目标上创建相应的集合。
mongosync 临时更改目标集群中的某些已复制集合特征。 它在COMMIT状态期间将这些目标集群特征更改回源集群特征。 有关更多信息,请参阅集合特征更改。
RUNNING状态包括两个阶段:
集合副本
在集合复制阶段, mongosync执行从源集群到目标集群的初始数据传输。 mongosync通过将源集合拆分为分区并将分区复制到相应的目标集合来执行此数据传输。
变更事件应用程序
变更事件应用程序(CEA) 阶段在集合复制阶段结束后开始。
在 CEA 阶段,当您写入源集群时,mongosync 会对目标集群进行持续更改。
为了持续更新目标集群,mongosync 在源集群上打开变更流,并将收到的变更事件应用于目标集群。
当 CEA 阶段开始时, mongosync会应用在集合复制阶段收到的变更事件,然后再处理在 CEA 阶段收到的事件。
暂停同步
要恢复暂停的同步进程并将mongosync返回到RUNNING状态,请调用恢复端点。
完成同步
要完成源集群和目标集群之间的同步,请调用提交端点。
注意
在开始提交进程之前,您必须区块对源集群的写入。
enableUserWriteBlocking"sourceAndDestination"如果您之前在使用起始端点时将 设立为mongosync ,则当您使用 端点时,commit 会自动阻止对源集群的写入。
如果您没有将enableUserWriteBlocking 设立为"sourceAndDestination" setUserWriteBlockMode,运行在源集群上运行 以区块写入。
commit 端点会启动 COMMITTING 状态,此时 mongosync 会停止在源集群与目标集群之间迁移数据。
当COMMITTING状态开始时, mongosync会检索提交时间戳,即对源集群进行最近一次操作的时间。
如果没有错误, mongosync会发送成功消息,并通过处理提交时间戳之前的事件来退出 CEA。 mongosync还会恢复mongosync在同步期间临时更改的集合特征。
反向同步
要反转已提交同步操作的方向,请调用反向端点。
reverse端点进入REVERSING状态。 mongosync交换源集群和目标集群,并继续应用变更事件。
如果反向同步成功, mongosync将进入RUNNING状态。 同步从原始同步作业的相反方向继续进行。
了解详情
要学习;了解有关mongosync的详情,请参阅: