elasticsearch 分片设计及管理
elasticsearch 从7.0开始默认主分配数从5改成了1。解决查询算分,聚合不准问题。
但是单个分片,集群无法实习水平扩展,无法通过增加节点实现水平扩展。
两个分片:
集群增加一个节点,elasticsearch会自动进行分片的移动,也叫shard rebalancing.
如何设计分片数?
当分片数>节点数时
- 一旦集群中有数据节点加入,分片会自动进行分配
- 分片在进行自动分配时,系统不会downtime
多分片的好处:一个索引可以分布在不同的节点,多个节点可以并行执行。
- 查询可以并行执行。
- 数据写入可以分散在多个机器。
一些例子:
案例1:每天1GB数据一个索引,一个主分片,一个副本分片,保留半年数据接近360GB数据量,360个分片。
案例2:5个不同的日志,每天创建一个日志索引,每个日志索引创建10个主分片,保留半年数据,
5*10*30*6 = 9000个分片。
分片过多带来的副作用:
如何确定主分片数:
如何确定副本数量:
调整分片总数设定,避免分配不均衡:
ES分片策略尽量保证节点上的分片数大致相同。
- 扩容的新节点没有数据,导致新索引集中在新节点
- 热数据过于集中可能会产生新的问题。
上一篇:一文快速入门分库分表
下一篇:数据库分库分表解决方案汇总