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

commit

在此页面上

  • 说明
  • 要求
  • 请求
  • 请求正文参数
  • 响应
  • 例子
  • 确认同步已准备就绪
  • 发送提交请求
  • 行为
  • 数据验证
  • 集合特征变更
  • 端点保护

完成源集群和目标集群之间的同步,并停止集群之间的连续同步。

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

在使用commit端点之前:

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

    警告

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

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

    • lagTimeSeconds 接近0推荐,但不是必需

      注意

      lagTimeSeconds

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

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

    • 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状态,集群之间的连续同步就会停止。

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

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

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

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

集合特征
的影响 commit

Unique Indexes

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

TTL Indexes

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

Hidden Indexes

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

写入阻塞

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

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

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

另请参阅:写入阻塞

固定大小集合

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

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

后退

resume