You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Elasticsearch仅备份热索引,避免全量快照占用过多存储?

解决方案

一、解决每次新建仓库全量备份的问题

你每次备份全量的根本原因是ES的快照增量复用能力仅支持同一个快照仓库内的历史快照,跨不同仓库无法共享已备份的段文件,再加上如果你之前执行的是全集群备份,自然会每次把所有历史索引都重新备份一遍。
调整方案非常简单:

  • 每次执行快照前,先通过ES API筛选出创建时间在过去24小时内的新增索引,命令参考:
# 筛选过去24小时创建的业务索引,输出索引名列表
curl -s "http://<ES集群地址>:9200/_cat/indices?h=index,creation.date.string" | awk '$2 >= "'$(date -d "-24 hours" +%Y-%m-%dT%H:%M:%S)'" {print $1}' | grep -v "\." > today_indices.txt
  • 备份时仅指定上述筛选出的当日新增索引作为备份目标,不需要备份全集群。这样就算是新建的独立快照仓库,也只会备份当日的5个新增索引,不会拉取历史索引的数据,完全避免无效的全量备份。

二、冷热分层架构实现自动区分备份范围

完全可以通过冷热分层+索引生命周期管理(ILM)实现你要的24小时自动流转、仅热索引备份的需求,配置步骤如下:

  1. 节点打标签
    修改集群节点的elasticsearch.yml配置:
  • 热数据节点增加配置:node.attr.data: hot
  • 暖数据节点增加配置:node.attr.data: warm
    修改完成后滚动重启集群生效。
  1. 配置ILM生命周期策略
    创建索引生命周期策略,核心规则:
  • 热阶段:索引创建后默认进入热阶段,保持可写状态,留存在热节点,min_age设置为24小时
  • 暖阶段:索引创建满24小时后自动转入暖阶段,分片自动迁移到暖节点,可设置为只读、合并小段降低存储空间占用
  1. 关联索引模板
    把上述ILM策略关联到你支付日志的索引模板,后续所有新生成的日志索引会自动套用该策略,不需要人工干预。
    后续你每日备份时,可以直接筛选处于热阶段的索引作为备份目标,和按创建时间筛选的效果完全一致,还能避免因索引生成时间偏移导致的漏备问题。

三、额外优化建议

结合你已经验证的gzip压缩效果,还可以做以下优化降低存储占用、提升可靠性:

  • 每日归档打包时,同步生成压缩包的sha256校验值单独存储,恢复前先校验包完整性,避免NFS故障导致的损坏包无法恢复的问题
  • 你当前的每日独立归档模式天然隔离了不同日期的备份,单份备份损坏不会影响全量备份池,容错性远高于之前共用单个仓库的方案
  • 留存的归档包建议按年/月目录分类存储,方便后续审计检索,2年留存期的总存储量预计在30~40TB左右,完全可以满足存储需求

内容的提问来源于stack exchange,提问作者noze_potato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:30:03