CouchDB集群数据库分发

CouchDB集群数据库分发,couchdb,Couchdb,我们有一个具有24个节点的CouchDB集群,默认集群设置为q=8和n=3,并且已经创建了100个数据库。如果我们向集群中添加了24个节点并开始创建新数据库,那么它们是否一定会在新节点中创建?CouchDB如何决定将新数据库放在何处 我们正在运行2.3.1中的所有节点。默认情况下,CouchDB将随机为集群中所有节点上的数据库分配碎片,因此新数据库将在新节点和旧节点上都有碎片。它会将碎片分散到尽可能多的节点上,并保证碎片的两个副本永远不会位于同一节点上 如果您希望在新节点上仅托管碎片(例如,因为

我们有一个具有24个节点的CouchDB集群,默认集群设置为
q=8
n=3
,并且已经创建了100个数据库。如果我们向集群中添加了24个节点并开始创建新数据库,那么它们是否一定会在新节点中创建?CouchDB如何决定将新数据库放在何处


我们正在运行2.3.1中的所有节点。默认情况下,CouchDB将随机为集群中所有节点上的数据库分配碎片,因此新数据库将在新节点和旧节点上都有碎片。它会将碎片分散到尽可能多的节点上,并保证碎片的两个副本永远不会位于同一节点上

如果您希望在新节点上仅托管碎片(例如,因为旧节点正在填充),您可以利用“放置”功能。涉及两个步骤:

  • 浏览_nodes数据库中的文档,并在每个文档上设置“zone”属性,例如,对于旧节点设置“zone”:“old”,对于新节点设置“zone”:“new”
  • 定义一个
    [cluster]placement
    配置设置,告诉服务器在新区域中放置每个碎片的3个副本:
  • 您还可以将此功能用于其他目的;例如,根据机架位置、可用性区域等将节点拆分为多个区域,以确保副本之间具有最大的隔离度。您可以在此处阅读有关设置的更多信息:

    [cluster]
    placement = new:3