如果我有一个IBM Cloudant数据库,其中包含大约一百万个文档,我设置了一个复制过程将这些数据复制到另一个区域,我如何知道复制作业的进度?我知道它何时开始和何时结束,但在这两者之间什么都不知道。有没有方法跟踪进度?
idfiyjo81#
如果目标数据库在复制开始时为空,并且没有其他更改写入目标数据库,则需要等待目标数据库的序列标记与源数据库的序列标记匹配。您可以使用源和目标上的GET /<database name>端点来查找数据库的当前序列标记。
GET /<database name>
curl $URL/sourcedb { "update_seq": "23600-g1AAAARXeJyd0", "db_name": "sourcedb", ... }
在上面的示例中,复制器需要处理23600个更改。可以对目标数据库运行相同的命令以查看复制进度。此外,还有一个API端点,允许您查看复制作业的进度:GET _scheduler/docs/_replicator/<replication id>,其中复制ID是_replicator数据库中为启动复制而创建的文档的_id。它会传回类似下列的对象:
GET _scheduler/docs/_replicator/<replication id>
_replicator
_id
{ "database": "_replicator", "doc_id": "e0330b1936f6194da22af8fa663c5be8", "id": null, "source": "https://source.cloudant.com/sourcedb/", "target": "https://target.cloudant.com/targetdb/", "state": "completed", "error_count": 0, "info": { "revisions_checked": 1005, "missing_revisions_found": 1005, "docs_read": 1005, "docs_written": 1005, "changes_pending": 376, "doc_write_failures": 0, "checkpointed_source_seq": "1011-g1AAAAfLeJy91FFKwzAYwPGigo_uBvqq0JmkbZqCsomoj3oDzZcvZYxtFbc96w30BnoDvYHeQG-gN9AbzCYpbntbhfQlhdJ" }, "start_time": "2020-11-17T09:55:01Z", "last_updated": "2020-11-17T09:55:58Z" }
其中包括复制状态、已处理的文档数量以及最后一个检查点序列标记,这些信息应足以估计复制作业的进度。API调用的完整细节在这里。
1条答案
按热度按时间idfiyjo81#
如果目标数据库在复制开始时为空,并且没有其他更改写入目标数据库,则需要等待目标数据库的序列标记与源数据库的序列标记匹配。
您可以使用源和目标上的
GET /<database name>
端点来查找数据库的当前序列标记。在上面的示例中,复制器需要处理23600个更改。可以对目标数据库运行相同的命令以查看复制进度。
此外,还有一个API端点,允许您查看复制作业的进度:
GET _scheduler/docs/_replicator/<replication id>
,其中复制ID是_replicator
数据库中为启动复制而创建的文档的_id
。它会传回类似下列的对象:
其中包括复制状态、已处理的文档数量以及最后一个检查点序列标记,这些信息应足以估计复制作业的进度。
API调用的完整细节在这里。