Docs 菜单
Docs 主页
/
MongoDB Cluster-to-Cluster Sync
/ /

commit

完成源集群和目标集群之间的同步。

有关详细信息,请参阅 完成切换进程。

在使用commit端点之前:

  • 停止应用程序以防止进一步写入源集群。 在提交期间,您仍可从源集群读取数据。

    警告

    如果在提交期间写入源集群,则可能会遇到数据丢失。

  • 使用进度端点确认以下值:

    • lagTimeSeconds 对于 mongosync,验证者的源集群和目标集群都在 0 附近(推荐,但不是必需

      注意

      lagTimeSeconds

      lagTimeSeconds 表示上次应用的事件与当前最新事件的时间之间的时间。 当您发送commit请求时, mongosync会进入COMMITTING状态并持续lagTimeSeconds报告的秒数,然后转换到COMMITTED状态。

      lagTimeSeconds0时,源集群和目标集群处于一致状态。

      有关 lagTimeSeconds 字段的详细信息,请参阅 progress

    • state: "RUNNING"

    • canCommit: true

注意

当您配置多个mongosync实例在分片集群之间同步时,您必须向每个mongosync实例发送相同的 API 端点命令。

有关更多信息,请参阅从多个mongosync实例提交同步。

POST /api/v1/commit

此端点不使用 HTTP 请求正文参数。 但是,您必须指定带有空对象{ }--data选项。

字段
类型
说明

success

布尔

当请求成功时,该值为true

error

字符串

如果发生错误,则指示错误名称。 当successtrue时,响应中将省略此字段。

errorDescription

字符串

所发生错误的详细描述。 当successtrue时,响应中将省略此字段。

以下示例将同步操作提交到目标集群。

在向commit端点发送请求之前,请使用进度端点确认同步已准备好提交。

curl localhost:27182/api/v1/progress -XGET
{
"progress":
{
"state":"RUNNING",
"canCommit":true,
"canWrite":false,
"info":"change event application",
"lagTimeSeconds":0,
"collectionCopy":
{
"estimatedTotalBytes":694,
"estimatedCopiedBytes":694
},
"directionMapping":
{
"Source":"cluster0: localhost:27017",
"Destination":"cluster1: localhost:27018"
},
"verification":
{
"source":
{
"estimatedDocumentCount": 42,
"hashedDocumentCount": 42,
"lagTimeSeconds": 2,
"totalCollectionCount": 42,
"scannedCollectionCount": 10,
"phase": "stream hashing"
},
"destination": {
"estimatedDocumentCount": 42,
"hashedDocumentCount": 42,
"lagTimeSeconds": 2,
"totalCollectionCount": 42,
"scannedCollectionCount": 10,
"phase": "stream hashing"
}
}
},
"success": true
}

progress端点返回了"canCommit":true ,这意味着commit请求可以成功运行。

以下命令将请求发送到commit端点:

curl localhost:27182/api/v1/commit -XPOST --data '{ }'
{"success":true}

如果 commit请求成功,mongosync 将进入 COMMITTED 状态。一旦 mongosync 进入 COMMITTED 状态,集群之间的数据迁移就会停止。

在将应用程序负载从源集群转移到目标集群之前,请检查数据以确保同步成功。

注意

如果mongosync canWrite: true在提交期间停止,则在 /progress 端点报告 之前,您必须重新启动整个迁移以确保其通过验证。

有关详细信息,请参阅验证数据传输。

commit 恢复同步期间暂时改变的mongosync集合特征。

commit下表说明了mongosync 对collection在同步进程中更改的影响特征的影响。

集合特征
的影响 commit

Unique Indexes

commit 重置mongosync在目标集群上作为非唯一索引复制的唯一索引。

TTL Indexes

commit 重置expireAfterSeconds mongosync设立为目标集群上MAX_INT的值的 。

Hidden Indexes

commit 重置mongosync在目标集群上复制为非隐藏的隐藏索引。

写入阻塞

如果启用双重写入阻塞,则 mongosync 会阻止写入:

  • 在同步期间的目标集群上。

  • 在收到 commit 时的源集群上。

mongosync 默认启用仅默认写入阻塞。

要学习;了解更多信息,请参阅写入阻塞。

固定大小集合

commit 会将mongosync设立的固定大小集合所需的最大大小重置为目标集群上允许的最大大小。

mongosync 不保护commit端点。 但是,默认情况下,该 API 仅绑定到本地主机,不接受来自其他来源的调用。 此外, commit调用不会公开连接档案或用户数据。

后退

resume

在此页面上