2011-09-12 68 views
3

我通过发布到localhost:5984/_replicate来引导couchdb中的复制。该URL只接受POST请求。列出couchdb中的活动复制1.1.0

还有第二个URL:localhost:5984/_replicator,它接受PUT,GET和DELETE请求。

当我配置一个复制张贴到_replicate时,它开始,但我无法获得有关它的信息。它也没有在_replicator中列出。

  • 如何获取活动复制列表?
  • 如何取消主动复制?

编辑:如何使用_replicator方法触发复制。

感谢JasonSmith的评论,我得到了以下解决方案:注册到_replicator需要使用完整的URL(包括身份验证凭证)作为目标数据库。当使用_replicate url时,情况并非如此,该url很高兴获取目标数据库的名称(我在此讨论关于复制的说法)。究其原因,据我所知,解释here(见第8节“的user_ctx财产和代表团”)

回答

7

原来的API是一个特殊的URL,/_replicate您告诉沙发做什么,它会告诉你结果。但是,较新的系统是一个常规数据库,名为/_replicator,您可以在其中创建文档,告诉沙发该做什么。文档格式与旧格式_replicate相同,但是CouchDB将在复制过程中更新文档。 (例如,它将添加一个字段"state":"triggered""state":"complete"等)

要获取活动复制列表,请将GET /_active_tasks作为服务器管理员。例如(格式):

curl http://admin:[email protected]: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

+0

这很有趣,但它仍然没有解决我所有的问题。注意'_replicator'不起作用,而发往'_replicate'的文件与文档完全相同。在我得到的日志中:'错误开始复制'045020f93f9da91e1e6b609754b32a15 + continuous + create_target'(document'maintenance'):{未授权,<<“未经授权访问数据库维护”>>'。我更喜欢'_replicator'方法,因为它是一个真正的数据库,我可以轻松管理我的复制。 – dangonfast