【问题标题】:Listing active replications in couchdb 1.1.0列出 couchdb 1.1.0 中的活动复制
【发布时间】:2011-09-13 15:22:23
【问题描述】:

我通过 POST 到 localhost:5984/_replicate 在 couchdb 中引导复制。此 URL 只接受 POST 请求。

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

当我将复制 POST 配置为 _replicate 时,它​​会启动,但我无法获得有关它的信息。它也没有在 _replicator 中列出。

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

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

感谢 JasonSmith 的 cmets,我得到了以下解决方案:PUT 到 _replicator 需要使用目标数据库的完整 url(包括身份验证凭据)。使用_replicate url 时情况并非如此,它很高兴只获得目标数据库的名称(我在这里谈论的是拉式复制)。据我所知,原因已在here 中进行了解释(参见第 8 节“user_ctx 属性和委托”)

【问题讨论】:

    标签: couchdb


    【解决方案1】:

    最初的 API 是一个特殊的 URL,/_replicate,您可以在其中告诉 Couch 要做什么,它会告诉您结果。但是,较新的系统是一个常规数据库,称为 /_replicator,您在其中创建 documents 告诉 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

    【讨论】:

    • 这很有趣,但它仍然没有解决我所有的问题。 PUT 到 _replicator 不起作用,而 POST 到 _replicate 则使用完全相同的文档。在我得到的日志中:Error starting replication '045020f93f9da91e1e6b609754b32a15+continuous+create_target' (document 'maintenance'): {unauthorized, &lt;&lt;"unauthorized to access database maintenance"&gt;&gt;。我更喜欢_replicator 方法,因为它是一个真实的数据库,我可以轻松地管理我的复制。
    猜你喜欢
    • 2021-06-26
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    相关资源
    最近更新 更多