2011-09-12 70 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