Easysearch 节点磁盘不足应对方法

Easyearch 为了防止索引将磁盘空间完全占满,使用磁盘水位线进行磁盘空间控制。之前有文章提过不同水位线的作用,以及如何使用 INFINI Console 提前进行告警,提前进行处理。本篇主要探讨提前处理的情况。

一、增加资源

如果资源充裕,可考虑为 Easysearch 集群扩充资源:

  1. 添加新的数据节点

扩充节点后,集群会自动进行数据平衡,可用下面的命令查看进度

plain 复制代码
GET /_cat/shards?v&h=state,node&s=state

如果响应中分片的状态是 RELOCATING ,则表示分片仍在移动。

  1. 扩充现有数据节点磁盘容量

扩充完后可查看磁盘利用率下降情况

plain 复制代码
GET _cat/allocation?v&s=disk.avail&h=node,disk.percent,disk.avail,disk.total,disk.used,disk.indices,shards

二、释放磁盘空间

如果无资源可添加,则考虑减少磁盘消耗:

  1. 删除无用索引

建议使用索引生命周期进行管理,自动删除过期索引。

  1. 删除多余副本

有些业务索引可能会有多分副本,可酌情缩减副本数,降低磁盘消耗。以下命令按副本数量和主存储大小的降序排列索引。

plain 复制代码
GET _cat/indices?v&s=rep:desc,pri.store.size:desc&h=health,index,pri,rep,store.size,pri.store.size
  1. 可搜索快照

对于有些数据平时不常用,但需要长期保留的,建议使用可搜索快照功能降低磁盘消耗。

三、索引空间优化

  1. 启用 ZSTD 压缩及 source_reuse 功能

Easysearch 支持 ZSTD 和 source_reuse 功能,对比默认的压缩算法,可大幅降低磁盘消耗。

可在创建索引时启用 ZSTD 和 source_reuse 功能,也可通过索引模板来进行设置,参考文档

plain 复制代码
PUT test-index
{
  "settings": {
    "index.codec": "ZSTD",
    "index.source_reuse": "true"
  }
}

⚠️ 注意:当索引里包含 nested 类型映射,或插件额外提供的数据类型时,不能启用 source_reuse,例如 knn 索引。

  1. 索引优化
  • mapping 优化
    避免使用默认的 mapping 类型,因为字符串类型的数据将得到 text 和 keyword 两个类型的 mapping。
  • 字段优化
    统计指定索引每个字段的访问次数。
plain 复制代码
GET metrics/_field_usage_stats

分析指定索引各个字段占用磁盘的大小。

plain 复制代码
POST metrics/_disk_usage?run_expensive_tasks=true

结合以上信息进一步优化各个字段,如关闭不用的功能等

  1. 使用 rollup 功能

对于时序场景类的数据,往往会有大量的非常详细的聚合指标,随着时间的图推移,存储将持续增长。汇总功能可以将旧的、细粒度的数据汇总为粗粒度格式以进行长期存储。通过将数据汇总到一个单一的文档中,可以大大降低历史数据的存储成本。

Easysearch 的 rollup 具备一些独特的优势,可以自动对 rollup 索引进行滚动而不用依赖其他 API 去单独设置,并且在进行聚合查询时支持直接搜索原始索引,做到了对业务端的搜索代码完全兼容,从而对用户无感知。

官网文档:infinilabs.cn/docs/latest...

相关推荐
可涵不会debug4 小时前
【IoTDB】时序数据库选型指南:工业大数据场景下的技术突围
数据库·时序数据库
ByteBlossom4 小时前
MySQL 面试场景题之如何处理 BLOB 和CLOB 数据类型?
数据库·mysql·面试
麦兜*4 小时前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
Slaughter信仰4 小时前
深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第十章知识点问答(10题)
java·jvm·数据库
麦兜*4 小时前
MongoDB 在物联网(IoT)中的应用:海量时序数据处理方案
java·数据库·spring boot·物联网·mongodb·spring
-Xie-5 小时前
Mysql杂志(十六)——缓存池
数据库·mysql·缓存
七夜zippoe5 小时前
缓存与数据库一致性实战手册:从故障修复到架构演进
数据库·缓存·架构
一个天蝎座 白勺 程序猿5 小时前
Apache IoTDB(5):深度解析时序数据库 IoTDB 在 AINode 模式单机和集群的部署与实践
数据库·apache·时序数据库·iotdb·ainode
QQ3596773456 小时前
ArcGIS Pro实现基于 Excel 表格批量创建标准地理数据库(GDB)——高效数据库建库解决方案
数据库·arcgis·excel