CouchDB 如何跟踪Cloudant复制的进度?

lf3rwulv  于 2022-12-09  发布在  CouchDB
关注(0)|答案(1)|浏览(162)

如果我有一个IBM Cloudant数据库,其中包含大约一百万个文档,我设置了一个复制过程将这些数据复制到另一个区域,我如何知道复制作业的进度?我知道它何时开始和何时结束,但在这两者之间什么都不知道。有没有方法跟踪进度?

idfiyjo8

idfiyjo81#

如果目标数据库在复制开始时为空,并且没有其他更改写入目标数据库,则需要等待目标数据库的序列标记与源数据库的序列标记匹配。
您可以使用源和目标上的GET /<database name>端点来查找数据库的当前序列标记。

curl $URL/sourcedb
{
  "update_seq": "23600-g1AAAARXeJyd0",
  "db_name": "sourcedb",
...
}

在上面的示例中,复制器需要处理23600个更改。可以对目标数据库运行相同的命令以查看复制进度。
此外,还有一个API端点,允许您查看复制作业的进度:GET _scheduler/docs/_replicator/<replication id>,其中复制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调用的完整细节在这里。

相关问题