2

我创建了具有 4 个节点的 BigCouch 集群,只需将 PUT 发送到节点数据库:

curl -X PUT http://bigcouch-a.example.com:5986/nodes/bigcouch@bigcouch-a.example.com -d {}
curl -X PUT http://bigcouch-a.example.com:5986/nodes/bigcouch@bigcouch-b.example.com -d {}
curl -X PUT http://bigcouch-a.example.com:5986/nodes/bigcouch@bigcouch-c.example.com -d {}
curl -X PUT http://bigcouch-a.example.com:5986/nodes/bigcouch@bigcouch-d.example.com -d {}

所有节点都已正确注册,将 GET 发送到成员资格会返回所有 4 个节点:

{"all_nodes":[
    "bigcouch@bigcouch-a.example.com",
    "bigcouch@bigcouch-b.example.com",
    "bigcouch@bigcouch-c.example.com",
    "bigcouch@bigcouch-d.example.com"]
 "cluster_nodes":[
    "bigcouch@bigcouch-a.example.com",
    "bigcouch@bigcouch-b.example.com",
    "bigcouch@bigcouch-c.example.com",
    "bigcouch@bigcouch-d.example.com"]
}

问题是:如何删除节点?

我试图将 DELETE 发送到节点数据库

curl -X DELETE http://bigcouch-a.example.com:5986/nodes/bigcouch@bigcouch-d.example.com

但我得到一个错误:

{"error":"conflict", "reason":"Document update conflict."}

一旦我简单地停止了节点 d,我的会员资格就会返回:

{"all_nodes":[
    "bigcouch@bigcouch-a.example.com",
    "bigcouch@bigcouch-b.example.com",
    "bigcouch@bigcouch-c.example.com"]
 "cluster_nodes":[
    "bigcouch@bigcouch-a.example.com",
    "bigcouch@bigcouch-b.example.com",
    "bigcouch@bigcouch-c.example.com",
    "bigcouch@bigcouch-d.example.com"]
}

所以节点d从那里消失了,"all_nodes"但仍然作为"cluster_nodes成员存在。

在这种状态下,我无法创建任何新数据库。每次收到消息:

could not load validation funs {function_clause,
    [{lists, flatmap,
    [#Fun<couch_db.36.90395586>,
    {nodedown, <<"progress not possible">>}]},
    {couch_db, '-load_validation_funs/1-fun-1-', 1}]}

任何想法如何解决它?

4

1 回答 1

4

节点 db 是一个 couchdb 数据库,因此您需要传递当前版本来更新或删除文档。

请参阅我之前关于如何移动分片的答案:将分片从一个 bigcouch 服务器移动到另一个(用于平衡)

于 2012-02-10T18:56:40.370 回答