当前位置: 首页 > news >正文

第五阶段 47 · snapshot 备份与恢复

47 · snapshot 备份与恢复

阶段:第五阶段 / 运维进阶
ES:_snapshot/ SLM | PostgreSQL:pg_dump/ 基础备份 + PITR


1. 概念

ES 的备份是快照(snapshot):把索引数据增量存到一个仓库(repository)
(共享文件系统、S3、Azure、GCS 等)。快照是增量的——只存与上次不同的段,省空间。

  • repository:备份存哪里(先注册)。
  • snapshot:某时刻的一份备份(可含全部或部分索引)。
  • SLM(Snapshot Lifecycle Management):定时自动打快照 + 按保留策略清理。

不要用「拷贝 data 目录」当备份——快照是唯一官方安全方式。


2. PostgreSQL 对照

ESPostgreSQL
注册 repository配置备份存储位置
打 snapshotpg_basebackup/pg_dump
restore从备份恢复
SLM 定时策略cron + 保留策略
增量快照WAL 归档 / 增量备份

3. ES DSL

3.1 注册仓库(以共享文件系统为例)

PUT _snapshot/my_repo { "type": "fs", "settings": { "location": "/mnt/es_backup" } // 需在 elasticsearch.yml 配 path.repo }

3.2 打快照 / 恢复

# 打一份包含指定索引的快照 PUT _snapshot/my_repo/snap_20260801?wait_for_completion=true { "indices": "sales-*,orders_idx", "include_global_state": false } # 恢复(可改名,避免覆盖现有索引) POST _snapshot/my_repo/snap_20260801/_restore { "indices": "orders_idx", "rename_pattern": "(.+)", "rename_replacement": "restored_$1" }

3.3 SLM 自动快照策略

PUT _slm/policy/daily { "schedule": "0 30 1 * * ?", // 每天 01:30 "name": "<daily-snap-{now/d}>", "repository": "my_repo", "config": { "indices": ["*"], "include_global_state": false }, "retention": { "expire_after": "30d", "min_count": 5, "max_count": 50 } }

4. Spring Boot 实现

@ComponentpublicclassDoc47Snapshot{@AutowiredprivateElasticsearchClientelasticsearchClient;/** 打一份快照(阻塞直到完成) */publicvoidcreateSnapshot(Stringrepo,Stringsnapshot,List<String>indices)throwsIOException{elasticsearchClient.snapshot().create(c->c.repository(repo).snapshot(snapshot).waitForCompletion(true).indices(indices).includeGlobalState(false));}/** 恢复快照到改名后的索引 */publicvoidrestore(Stringrepo,Stringsnapshot,List<String>indices)throwsIOException{elasticsearchClient.snapshot().restore(r->r.repository(repo).snapshot(snapshot).indices(indices).renamePattern("(.+)").renameReplacement("restored_$1").waitForCompletion(true));}}

快照/恢复客户端在elasticsearchClient.snapshot()。生产建议用SLM托管,代码里少手动打。


5. 坑与最佳实践

  1. 必须先注册 repositoryfs类型要在所有节点配同一path.repo并可访问。
  2. 恢复前先关/改名目标索引:不能直接恢复到已 open 的同名索引,用 rename 或先 close。
  3. include_global_state谨慎:含集群设置/模板,跨集群恢复时可能不想要,一般设false
  4. 快照是增量、恢复是全量:删除旧快照不会破坏后续快照的可恢复性(ES 自动处理引用)。
  5. 定期演练恢复:备份能打 ≠ 能恢复,定期在隔离环境试 restore。
  6. 别拷 data 目录当备份:段文件在写入/合并中,直接拷会损坏。

http://www.jsqmd.com/news/1330935/

相关文章:

  • UE5新手避坑指南:Lumen与Nanite核心配置与FBX导入全解析
  • Docker容器技术详解:从核心概念到实战部署
  • UE动画系统进阶:ALS V4 Overlay状态驱动与骨骼分层混合详解
  • 从零开始构建专属AI助手:系统化训练与高效人机协作指南
  • Android Material Design 组件实战:SwitchMaterial、Chip 与 ChipGroup 深度解析
  • 天赐范式第124天:从自己,不以物喜不以己悲,到不能自已
  • 2026年8月耐磨渣浆泵/洗煤渣浆泵公司推荐精选_浙江汇南泵业制造有限公司 - 行业平台推荐
  • PyTorch模型冻结实战:迁移学习中的参数控制与优化器配置
  • SMB协议深度解析:从文件共享到数据中心存储的核心技术
  • C++实现多级双向链表扁平化:递归与迭代双解详解
  • 椰林海鲜码头联系地址? - 17328623207
  • Unity3D集成智能对话模型:打造动态NPC对话系统的架构与实战
  • Excel列互换实战:从基础拖拽到VBA宏,安全高效的数据整理技巧
  • 端口连通性排查:从基础命令到进阶诊断的完整指南
  • 喜马拉雅音频下载器:免费获取VIP和付费专辑的完整指南
  • ZYNQ PS端GPIO中断配置与实现:从原理到代码实践
  • AI协作实践:从提示词工程到工作流重塑的深度思考
  • 短信验证码系统设计与实现:从架构到安全防护
  • 技术创业者的价值回归:从商业成功到代码创造的心流体验
  • 推荐中山酒店门现货厂家 - 品牌推广大师
  • Kubernetes弃用Docker运行时的技术演进与Containerd迁移实战
  • Linux下RTL8152网卡LED驱动配置:从模块参数到硬件寄存器
  • HTML基础入门:从文档结构到语义化标签的完整实践指南
  • 深入解析Docker Commit:从容器到镜像的打包原理与实践指南
  • 腾讯电脑管家18.0 AI安全架构解析:从沙箱隔离到系统底层管控的协同防御
  • 从OpenAI越狱事件看高能力AI Agent安全评估:可验证Containment Contract设计
  • 数据库系统期末核心考点全解析:从ER图、SQL到JDBC与范式分解
  • 国内国产替代的BGA芯片测试座厂家
  • Unity URP屏幕空间轮廓渲染:UnityFx.Outline集成与优化指南
  • 基于RAG与向量数据库的智能知识库搭建实战:从牙医诊所案例到通用解决方案