Primary Shard | 主分片
- 主分片主要是提升系统的存储容量;
- 通过主分片,可以将一份索引的数据,分散在多个 Data Node 上,实现存储的水平扩展;
- 主分片数在创建索引的时候指定,后续默认不能更改,如要修改,需重建索引;
Replica Shard | 副本分片
提升可用性
- 一旦主分片丢失,副本分片可以 Promote 成主分片;
- 副本分片数可以动态调整;
提升系统的读取性能
- 副本分片由主分片同步,通过增加 Replica 个数,一定程度上可以提高读取的吞吐量;
分片数的设定
- 从 7.0 开始,索引的默认主分片数为 1,副本分片数为 0;
- 主分片数过小,如果该索引增长很快,集群无法通过增加节点实现对这个索引的数据扩展;
- 主分片数设置过大,导致单个分片容量很小,引发一个节点上有过多分片,从而影响性能;
- 副本分片数设置过多,会降低集群的写入性能;
- 副本分片必须和主分片分配到不同的节点上;
故障转移
![](https://i-blog.csdnimg.cn/blog_migrate/3be88381e78dba86f48be16a74e915cf.png)
故障转移.png
- Node1 出现故障,集群重新选举 Master Node 为 Node2;
- Node3 上的 R0 晋升为 P0;
- R0 和 R1 重新分配,集群变绿;
- 故障转移后,两个 Node 上主分片和副本分片的比例分别是 1:2 和 2:1,整个过程可以在 cerebro 中看到;