如何缩减Elasticsearch索引分片?
- By : Will
- Category : Elastic Stack
Elastic Stack
1 前言
一个问题,一篇文章,一出故事。
笔者集群有5个节点,每个节点总体磁盘空间是4.5T。当前每个接单的平均磁盘使用率是76%,一共5个节点,如果出现一个节点不可用的情况,那么空间会被复制到剩下的4个节点空间,于是笔者做了一个试算。
| 总空间/节点 | 平均使用率/节点 | 平均已用空间/节点 | 平均可用空间/节点 | 可用空间/4节点 | 可用空间/5节点 | |-------------|----------------|-------------------|------------------|---------------|---------------| | 4.50 TB | 76% | 3.42 TB | 1.08 TB | 4.32 TB | 5.40 TB | | 4.50 TB | 80% | 3.60 TB | 0.90 TB | 3.60 TB | 4.50 TB |
从上面表格可知,当每个节点的平均使用达到80%的时候,如果出现一个节点故障,那么四个节点可用空间为3.6TB。此时单个节点的使用空间为理想的平均空3.6TB,此时下线的数据块就会被复制到可用的四个节点,理论上刚好够用,但是现实不能太理想,因为分布的数据不是每个节点绝对平均的。
此时,我们正常情况下可以增加单节点空间或者是加节点,但是笔者本次想通过将旧索切换到温暖阶段,设置为只读并将其缩减为单个分片。
笔者一个数据块目前是存2份,如果将超过半年的数据缩减为单个数据块,理论上可以节省25%的存储空间。
本章在之前的章节已经完成了索引的只读设置,本章将只归纳总结索引的分片数量缩减。
2 最佳实践
2.1 查看设置前的索引状态
GET /_cat/indices/postfix-2024.11.30?v
可见如下显示,
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size dataset.size green open postfix-2024.11.30 kwP_bvB_RK-UssUjYahIvA 1 1 213242 0 136.7mb 68.1mb 68.1mb
2.2 设置副本数量为零
PUT /postfix-2024.11.30/_settings
{
"settings": {
"index": {
"number_of_replicas": 0
}
}
}
2.3 查看设置后的索引状态
GET /_cat/indices/postfix-2024.11.30?v
显示示例如下,
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size dataset.size green open postfix-2024.11.30 kwP_bvB_RK-UssUjYahIvA 1 0 213242 0 68.1mb 68.1mb 68.1mb
参阅文档
===================
没有评论