关于MongoDB mongosync
mongosync二进制文件是Cluster-to-Cluster Sync中使用的主节点 (primary node in the replica set)进程。 mongosync
将数据从源集群迁移到目标集群,并使集群保持持续同步,直到您完成同步。
您可以使用mongosync
创建反映生产环境的专用分析、开发或测试集群。
mongosync
通过state追踪其当前操作。 mongosync
根据收到的请求进入不同状态。 当前的mongosync
状态决定了您可以运行哪些API操作。
注意
要查看mongosync
的当前状态,请使用/progress端点。
下图说明了mongosync
状态和API操作之间的关系:
详情
连接源集群和目标集群
您必须先创建与源集群和目标集群的初始连接,然后mongosync
才能开始同步数据。 有关更多信息,请参阅连接mongosync
。
当mongosync
连接到源集群和目标集群时,同步进程进入IDLE状态。
开始同步
要启动同步进程,请调用启动端点。
start
端点进入RUNNING
状态,此时mongosync
将数据从源集群同步到目标集群。 如果您对源集群进行后续写入, mongosync
会将这些操作应用于目标集群。
对于每个同步的源集合, mongosync
都会在目标上创建相应的集合。
mongosync
临时更改目标集群中的某些已复制集合特征。 它在COMMIT
状态期间将这些目标集群特征更改回源集群特征。 有关更多信息,请参阅集合特征更改。
RUNNING
状态包括两个阶段:
集合副本
在集合复制阶段, mongosync
执行从源集群到目标集群的初始数据传输。 mongosync
通过将源集合拆分为分区并将分区复制到相应的目标集合来执行此数据传输。
变更事件应用程序
变更事件应用程序(CEA) 阶段在集合复制阶段结束后开始。
在 CEA 阶段,当您对源集群进行更改时, mongosync
会持续更新目标集群。
为了持续更新目标集群, mongosync
在源集群上打开变更流,并将收到的变更事件应用于目标集群。
当 CEA 阶段开始时, mongosync
会应用在集合复制阶段收到的变更事件,然后再处理在 CEA 阶段收到的事件。
暂停同步
要恢复暂停的同步进程并将mongosync
返回到RUNNING
状态,请调用恢复端点。
完成同步
要完成源集群和目标集群之间的同步,请调用提交端点。
commit
端点会启动COMMITTING状态,此时mongosync
会停止源集群与目标集群之间的连续同步。
当COMMITTING
状态开始时, mongosync
会检索提交时间戳,即对源集群进行最近一次操作的时间。
如果没有错误, mongosync
会发送成功消息,并通过处理提交时间戳之前的事件来退出 CEA。 mongosync
还会恢复mongosync
在同步期间临时更改的集合特征。
反向同步
要反转已提交同步操作的方向,请调用反向端点。
reverse
端点进入REVERSING状态。 mongosync
交换源集群和目标集群,并继续应用变更事件。
如果反向同步成功, mongosync
将进入RUNNING
状态。 同步从原始同步作业的相反方向继续进行。
了解详情
要学习;了解有关mongosync
的详情,请参阅: