> 技术文档 > 【Elasticsearch】快照生命周期管理 SLM(理论篇)

【Elasticsearch】快照生命周期管理 SLM(理论篇)

Elasticsearch 集群》系列,共包含以下文章:

  • 1️⃣ 冷热集群架构
  • 2️⃣ 合适的锅炒合适的菜:性能与成本平衡原理公式解析
  • 3️⃣ ILM(Index Lifecycle Management)策略详解
  • 4️⃣ Elasticsearch 跨机房部署
  • 5️⃣ 快照与恢复功能详解
  • 6️⃣ Elasticsearch 快照恢复 API 参数详解
  • 7️⃣ 安全地删除快照仓库、快照
  • 8️⃣ 快照生命周期管理 SLM(理论篇)
  • 9️⃣ 快照生命周期管理 SLM(实战篇)
  • 🔟 跨集群检索(Cross-Cluster Search)

😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!

快照生命周期管理 SLM(理论篇)

  • 1.快照生命周期管理(SLM)
  • 2.索引生命周期管理(ILM)
  • 3.SLM 与 ILM 的核心区别
    • 3.1 管理目标不同
    • 3.2 操作对象不同
    • 3.3 策略驱动因素不同
    • 3.4 典型使用场景
  • 4.协同工作场景
  • 5.总结对比表

1.快照生命周期管理(SLM)

SLM(Snapshot Lifecycle Management)是 Elasticsearch 中 自动化管理索引快照的策略,用于定期创建集群快照、定义保留策略,确保灾难恢复能力。

核心功能

  • 定时创建快照(如每天凌晨2点)
  • 自动清理旧快照(保留最近30天,删除更早版本)
  • 跨仓库管理(支持本地/云存储如 AWS S3、Azure Blob)

提出背景

  • 手动备份低效:大规模集群需备份数百个索引,人工操作易遗漏。
  • 存储成本失控:历史快照堆积占用大量云存储空间。
  • RTO / RPO 需求:业务要求明确恢复时间点(如最多丢失 1 小时数据)。

解决的问题

  • 自动化备份 → 减少人工干预
  • 精确保留策略 → 降低存储成本
  • 保障可恢复性 → 满足 SLA 要求

2.索引生命周期管理(ILM)

ILM(Index Lifecycle Management)是 Elasticsearch 中 自动化管理索引生命周期的策略,根据年龄、大小等条件将索引动态迁移到不同性能/成本的存储层。

生命周期阶段

阶段 操作 典型配置 Hot 高频读写(SSD存储) rollover(达 50GB 切新索引) Warm 低频查询(HDD存储) shrink(减少分片数) Cold 极少访问(低成本存储) freeze(冻结索引) Delete 删除过期数据 delete(保留 30 天后删除)

提出背景

  • 性能与成本矛盾:新索引需高性能(SSD),旧索引可存于廉价存储。
  • 手动轮转低效:人工迁移索引易出错,尤其日志类应用(如 Filebeat 日增数百索引)。
  • 存储优化需求:冷数据无需占用高价存储资源。

解决的问题

  • 存储分层优化 → 降低硬件成本
  • 自动索引轮转 → 提升集群稳定性
  • 资源按需分配 → 平衡性能与成本

3.SLM 与 ILM 的核心区别

3.1 管理目标不同

维度 SLM ILM 焦点 数据备份与恢复(快照副本) 索引存储优化(原始数据分层) 本质 灾备机制 资源调度机制

3.2 操作对象不同

类型 SLM ILM 操作目标 集群快照(.snapshot 文件) 原始索引(如 logs-2023-10-01-000001存储位置 外部仓库(S3 / HDFS / NFS) 集群内部节点(Hot / Warm / Cold 数据节点)

3.3 策略驱动因素不同

策略类型 SLM ILM 触发条件 时间计划(Cron 表达式) 索引年龄 / 大小 / 文档数 关键动作 create_snapshotdelete_snapshot rollovershrinkfreezedelete

3.4 典型使用场景

场景 SLM 示例 ILM 示例 日志管理 每日备份所有索引到 S3 7 天内日志存 Hot 节点(SSD),30 天后删除 安全合规 保留审计日志快照 5 年 合规数据在 Cold 阶段保留 1 年后删除

4.协同工作场景

两者通常配合使用以实现完整数据治理:

  • ILM 管理在线数据 #mermaid-svg-laW0KfbHzPyw3oov {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-laW0KfbHzPyw3oov .error-icon{fill:#552222;}#mermaid-svg-laW0KfbHzPyw3oov .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-laW0KfbHzPyw3oov .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-laW0KfbHzPyw3oov .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-laW0KfbHzPyw3oov .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-laW0KfbHzPyw3oov .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-laW0KfbHzPyw3oov .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-laW0KfbHzPyw3oov .marker{fill:#333333;stroke:#333333;}#mermaid-svg-laW0KfbHzPyw3oov .marker.cross{stroke:#333333;}#mermaid-svg-laW0KfbHzPyw3oov svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-laW0KfbHzPyw3oov .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-laW0KfbHzPyw3oov .cluster-label text{fill:#333;}#mermaid-svg-laW0KfbHzPyw3oov .cluster-label span{color:#333;}#mermaid-svg-laW0KfbHzPyw3oov .label text,#mermaid-svg-laW0KfbHzPyw3oov span{fill:#333;color:#333;}#mermaid-svg-laW0KfbHzPyw3oov .node rect,#mermaid-svg-laW0KfbHzPyw3oov .node circle,#mermaid-svg-laW0KfbHzPyw3oov .node ellipse,#mermaid-svg-laW0KfbHzPyw3oov .node polygon,#mermaid-svg-laW0KfbHzPyw3oov .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-laW0KfbHzPyw3oov .node .label{text-align:center;}#mermaid-svg-laW0KfbHzPyw3oov .node.clickable{cursor:pointer;}#mermaid-svg-laW0KfbHzPyw3oov .arrowheadPath{fill:#333333;}#mermaid-svg-laW0KfbHzPyw3oov .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-laW0KfbHzPyw3oov .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-laW0KfbHzPyw3oov .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-laW0KfbHzPyw3oov .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-laW0KfbHzPyw3oov .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-laW0KfbHzPyw3oov .cluster text{fill:#333;}#mermaid-svg-laW0KfbHzPyw3oov .cluster span{color:#333;}#mermaid-svg-laW0KfbHzPyw3oov div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-laW0KfbHzPyw3oov :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;} 新索引写入 Hot Phase Warm Phase? 迁移到HDD Cold Phase? 迁移到对象存储 Delete Phase? 删除索引
  • SLM 管理离线备份 #mermaid-svg-nzOEXx64sqdHjXtw {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-nzOEXx64sqdHjXtw .error-icon{fill:#552222;}#mermaid-svg-nzOEXx64sqdHjXtw .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-nzOEXx64sqdHjXtw .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-nzOEXx64sqdHjXtw .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-nzOEXx64sqdHjXtw .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-nzOEXx64sqdHjXtw .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-nzOEXx64sqdHjXtw .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-nzOEXx64sqdHjXtw .marker{fill:#333333;stroke:#333333;}#mermaid-svg-nzOEXx64sqdHjXtw .marker.cross{stroke:#333333;}#mermaid-svg-nzOEXx64sqdHjXtw svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-nzOEXx64sqdHjXtw .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-nzOEXx64sqdHjXtw .cluster-label text{fill:#333;}#mermaid-svg-nzOEXx64sqdHjXtw .cluster-label span{color:#333;}#mermaid-svg-nzOEXx64sqdHjXtw .label text,#mermaid-svg-nzOEXx64sqdHjXtw span{fill:#333;color:#333;}#mermaid-svg-nzOEXx64sqdHjXtw .node rect,#mermaid-svg-nzOEXx64sqdHjXtw .node circle,#mermaid-svg-nzOEXx64sqdHjXtw .node ellipse,#mermaid-svg-nzOEXx64sqdHjXtw .node polygon,#mermaid-svg-nzOEXx64sqdHjXtw .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-nzOEXx64sqdHjXtw .node .label{text-align:center;}#mermaid-svg-nzOEXx64sqdHjXtw .node.clickable{cursor:pointer;}#mermaid-svg-nzOEXx64sqdHjXtw .arrowheadPath{fill:#333333;}#mermaid-svg-nzOEXx64sqdHjXtw .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-nzOEXx64sqdHjXtw .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-nzOEXx64sqdHjXtw .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-nzOEXx64sqdHjXtw .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-nzOEXx64sqdHjXtw .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-nzOEXx64sqdHjXtw .cluster text{fill:#333;}#mermaid-svg-nzOEXx64sqdHjXtw .cluster span{color:#333;}#mermaid-svg-nzOEXx64sqdHjXtw div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-nzOEXx64sqdHjXtw :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;} 过期 触发定时任务 创建快照到S3 保留策略检查 删除旧快照

协同价值

  • ILM 删除原始索引后,SLM 仍保留其快照(满足长期归档需求)。
  • 恢复时:先从 SLM 快照还原,再由 ILM 自动分配到合适存储层。

5.总结对比表

特性 SLM ILM 英文全称 Snapshot Lifecycle Management Index Lifecycle Management 核心目标 数据备份与恢复 索引存储分层与优化 操作对象 集群快照(副本) 原始索引(数据本身) 关键操作 创建 / 删除快照 Rollover / Shrink / Freeze / Delete 存储位置 外部仓库(如 S3) 集群内部节点(Hot / Warm / Cold) Elasticsearch API PUT _slm/policy/daily_backups PUT _ilm/policy/logs_policy

一句话区分

  • ILM 管理 “活数据”(在线索引如何存储和迁移),SLM 管理 “数据备份”(如何保存和恢复快照)。
  • 协同关系:ILM 负责数据的 “生老病死”,SLM 负责 “拍遗照留念” 以备恢复。

两者共同构成 Elasticsearch 数据治理的核心框架,建议在大型生产环境中配合使用。