CouchDB集群数据库分布

标签 couchdb

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

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

最佳答案

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

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

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

您还可以将此功能用于其他目的;例如,通过根据机架位置、可用区域等将节点划分为多个区域,以确保副本之间具有最大程度的隔离。您可以在此处阅读有关设置的更多信息:

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

关于CouchDB集群数据库分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55738282/

相关文章:

python - 使用 couchdb-python 处理嵌套对象

CouchDB:无法正常启动CouchDB

mongodb - 我需要有关分布式媒体存储数据存储的建议

javascript - 需要在 CoffeeScript 中配置的库?

couchdb - 如何在外部链码构建中打包 couchdb 索引?

java - CouchDb - MongoDb 和 NoSQL 数据库比较(使用 XML 文档)

javascript - jquery.couchdb.js Ajax 成功/错误未被调用

codeigniter - couchDB + codeigniter?

python - 用 python 查询 cloudant

lucene - CouchDB Lucene 如何对包含减号 (-) 的查询进行 URL 编码