commit
说明
完成源集群和目标集群之间的同步,并停止集群之间的连续同步。
有关详细信息,请参阅 完成切换进程。
要求
在使用commit
端点之前:
停止应用程序以防止进一步写入源集群。 在提交期间,您仍可从源集群读取数据。
警告
如果在提交期间写入源集群,则可能会遇到数据丢失。
使用进度端点确认以下值:
lagTimeSeconds
接近0
(推荐,但不是必需)注意
lagTimeSeconds
lagTimeSeconds
表示上次应用的事件与当前最新事件的时间之间的时间。 当您发送commit
请求时,mongosync
会进入COMMITTING
状态并持续lagTimeSeconds
报告的秒数,然后转换到COMMITTED
状态。当
lagTimeSeconds
为0
时,源集群和目标集群处于一致状态。state: "RUNNING"
canCommit: true
注意
当您配置多个mongosync
实例在分片集群之间同步时,您必须向每个mongosync
实例发送相同的 API 端点命令。
有关更多信息,请参阅从多个mongosync
实例提交同步。
请求
POST /api/v1/commit
请求正文参数
此端点不使用 HTTP 请求正文参数。 但是,您必须指定带有空对象{ }
的--data
选项。
响应
字段 | 类型 | 说明 |
---|---|---|
| 布尔 | 当请求成功时,该值为 |
| 字符串 | 如果发生错误,则指示错误名称。 当 |
| 字符串 | 所发生错误的详细描述。 当 |
例子
以下示例将同步操作提交到目标集群。
确认同步已准备就绪
在向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 |
|
TTL Indexes |
|
Hidden Indexes |
|
写入阻塞 | |
固定大小集合 |
|
端点保护
mongosync
不保护commit
端点。 但是,默认情况下,该 API 仅绑定到本地主机,不接受来自其他来源的调用。 此外, commit
调用不会公开连接档案或用户数据。