如何追踪IBM Cloudant数据库复制任务的执行进度?
IBM Cloudant 复制任务进度追踪方案
1. 调用复制调度器API获取精准进度
Cloudant 内置的_scheduler系列API可以直接返回运行中复制任务的实时明细,是最准确的进度追踪方式:
- 首先通过
GET /_scheduler/jobs接口获取所有运行中任务的ID,再调用GET /_scheduler/jobs/<your-replication-job-id>获取单任务的详细指标,核心可参考字段如下:changes_done:已从源库读取的变更记录数量changes_pending:源库中尚未同步到目标的待处理变更总数量docs_written:已成功写入目标库的有效文档数量doc_write_failures:同步失败的文档数量,可用于排查异常
- 进度计算公式:
整体同步进度 = changes_done / (changes_done + changes_pending),百万级文档量的场景下,每10~30秒轮询一次接口即可,不会给集群带来额外性能压力。
2. 对比源/目标库元数据做近似估算
如果无法获取复制任务ID,可通过源库和目标库的元数据差值粗略估算进度:
- 分别调用
GET /<source-db-name>和GET /<target-db-name>接口,获取两个库的doc_count(总文档数)、update_seq(最新变更序列号)两个指标 - 文档同步进度可通过
target_doc_count / source_doc_count计算,变更同步进度可通过target_update_seq / source_update_seq计算 - 注意:如果同步过程中源库持续有新数据写入,该方法的结果会存在一定误差,仅适合做整体进度的大致判断。
3. 开启任务日志追踪同步细节
你可以在复制任务配置中开启日志功能,获取更细粒度的同步过程信息:
- 创建或编辑复制任务时,添加配置项
"log": true即可开启日志输出,日志会记录每一批次同步的文档数量、重试记录、当前推进到的变更序列位置等信息 - 对于已经启动的任务,修改配置后重启即可生效,Cloudant会自动从上次同步的断点继续推进,不会重复同步已完成的内容。
内容的提问来源于stack exchange,提问作者Daniel Mermelstein
相关产品推荐
相关产品推荐

