CouchDB集群数据库分发

时间:2019-04-18 02:22:58

标签: couchdb

我们有一个CouchDB群集,该群集具有24个节点,其中['4/1/2019', '4/2/2019', '4/3/2019', '4/4/2019', '4/5/2019', '4/8/2019', '4/9/2019', '4/10/2019', '4/11/2019', '4/12/2019', '4/15/2019'] q=8作为默认群集设置,并且已经创建了100个数据库。如果我们再向集群添加24个节点并开始创建新数据库,那么是否会在新节点中创建它们? CouchDB如何决定将新数据库放在何处?

我们正在运行2.3.1中的所有节点

1 个答案:

答案 0 :(得分:2)

默认情况下,CouchDB将为群集中所有节点之间的数据库随机分配分片,因此您的新数据库将在新节点和旧节点上都具有分片。它将使碎片尽可能多地分布在节点上,并确保碎片的两个副本永远不会位于同一节点上。

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

  1. 遍历_nodes数据库中的文档,并在每个文档上设置一个“区域”属性,例如“ zone”:“ old”代表旧节点,“ zone”:“ new”代表新节点。
  2. 定义[cluster] placement的配置设置,该设置告诉服务器将每个分片的3个副本放置在您的新区域中:
[cluster]
placement = new:3

您也可以将此功能用于其他目的;例如,通过根据机架位置,可用性区域等将节点划分为多个区域,以确保副本之间具有最大的隔离度。您可以在此处详细了解设置:

http://docs.couchdb.org/en/2.3.1/cluster/databases.html#placing-a-database-on-specific-nodes