我通过POST到localhost:5984 / _replicate在couchdb中引导复制。此URL仅接受POST请求。
还有第二个URL:localhost:5984 / _replicator,它接受PUT,GET和DELETE请求。
当我将复制POST配置为_replicate时,它会启动,但我无法获取有关它的信息。它也没有列在_replicator中。
编辑:如何使用_replicator
方法触发复制。
感谢JasonSmith的评论,我得到了以下解决方案:PUTT到_replicator
要求使用目标数据库的完整URL(包括身份验证凭据)。使用_replicate
url时不是这种情况,我很高兴获得目标数据库的名称(我在这里谈论拉动复制)。据我所知,原因解释为here(参见第8节“user_ctx属性和授权”)
答案 0 :(得分:7)
原始API是一个特殊的网址/_replicate
,您可以告诉Couch该做什么,并告诉您结果。但是,较新的系统是一个名为/_replicator
的常规数据库,您可以在其中创建文档,告诉Couch该做什么。文档格式与旧的_replicate
格式相同,但CouchDB将在复制过程中更新文档。 (例如,它会添加字段"state":"triggered"
或"state":"complete"
等)
要获取活动复制列表,请将/_active_tasks
作为服务器管理员。例如(格式化):
curl http://admin:secret@localhost:5984/_active_tasks
[ { "type": "Replication"
, "task": "`1bea06f0596c0fe6a1371af473a95aea+create_target`: `http://jhs.iriscouch.com/iris/` -> `iris`"
, "started_on": 1315877897
, "updated_on": 1315877898
, "status": "Processed 83 / 119 changes"
, "pid": "<0.224.0>"
}
, { "type": "Replication"
, // ... etc ...
}
]
wiki有cancel CouchDB replication的说明。基本上,您希望指定相同的源和目标,并添加"cancel":true
。