单节点CouchDB分片与副本数选择及配置调整相关问题咨询
CouchDB 单节点配置调整及存量数据处理方案
q=2、n=1 配置可行性
该配置在你的单节点场景下完全可用,且能大幅降低存储开销:
- n(副本数)默认设为3的作用是多节点集群下的容灾,单节点环境下所有副本都存储在同一台物理服务器,节点故障时无论n值多少都会全量不可用,调整为n=1可以直接将单份文档的存储占用降至原来的1/3,完全匹配你可接受短时 downtime 的需求。
- q(分片数)默认设为8是为了多节点集群下的分片负载均衡,单节点环境下过多分片只会增加元数据管理开销,q=2可以平衡性能和存储成本,适配海量数据的单节点运行场景。
配置修改后的存量数据处理
注意:全局q、n配置修改仅对修改后新建的数据库生效,不会自动变更存量数据库的分片、副本配置,也不会自动删除已生成的多余分片和副本,需要执行以下操作:
- 第一步:修改全局默认配置
找到CouchDB配置文件local.ini,在[cluster]配置段新增/修改参数:
保存后重启CouchDB服务,后续新建的数据库会自动应用该配置。[cluster] q = 2 n = 1 - 第二步:迁移存量数据库
每个存量数据库的分片、副本规则在创建时就已固定,需要通过数据迁移调整:- 新建临时数据库,新库会自动继承q=2、n=1的配置
- 调用CouchDB内置的
_replicate接口,将旧库全量数据同步到临时库 - 校验临时库数据完整性无误后,删除旧库,将临时库重命名为原库名即可
- 第三步:释放存储空间
数据迁移完成后,调用/_node/<你的节点名>/_compact接口触发全局压缩,也可针对单个数据库调用/<数据库名>/_compact,彻底清理旧分片、旧副本占用的磁盘空间。
额外提醒:n=1配置下无冗余副本,建议定期执行全量数据备份,避免磁盘硬件故障导致数据丢失。
内容的提问来源于stack exchange,提问作者Rahib Rasheed
相关产品推荐
相关产品推荐

