多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

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

第五阶段 47 · snapshot 备份与恢复 47 · snapshot 备份与恢复阶段第五阶段 / 运维进阶ES_snapshot/ SLM | PostgreSQLpg_dump/ 基础备份 PITR1. 概念ES 的备份是快照snapshot把索引数据增量存到一个仓库repository共享文件系统、S3、Azure、GCS 等。快照是增量的——只存与上次不同的段省空间。repository备份存哪里先注册。snapshot某时刻的一份备份可含全部或部分索引。SLMSnapshot Lifecycle Management定时自动打快照 按保留策略清理。不要用「拷贝 data 目录」当备份——快照是唯一官方安全方式。2. PostgreSQL 对照ESPostgreSQL注册 repository配置备份存储位置打 snapshotpg_basebackup/pg_dumprestore从备份恢复SLM 定时策略cron 保留策略增量快照WAL 归档 / 增量备份3. ES DSL3.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_completiontrue { 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,ListStringindices)throwsIOException{elasticsearchClient.snapshot().create(c-c.repository(repo).snapshot(snapshot).waitForCompletion(true).indices(indices).includeGlobalState(false));}/** 恢复快照到改名后的索引 */publicvoidrestore(Stringrepo,Stringsnapshot,ListStringindices)throwsIOException{elasticsearchClient.snapshot().restore(r-r.repository(repo).snapshot(snapshot).indices(indices).renamePattern((.)).renameReplacement(restored_$1).waitForCompletion(true));}}快照/恢复客户端在elasticsearchClient.snapshot()。生产建议用SLM托管代码里少手动打。5. 坑与最佳实践必须先注册 repositoryfs类型要在所有节点配同一path.repo并可访问。恢复前先关/改名目标索引不能直接恢复到已 open 的同名索引用 rename 或先 close。include_global_state谨慎含集群设置/模板跨集群恢复时可能不想要一般设false。快照是增量、恢复是全量删除旧快照不会破坏后续快照的可恢复性ES 自动处理引用。定期演练恢复备份能打 ≠ 能恢复定期在隔离环境试 restore。别拷 data 目录当备份段文件在写入/合并中直接拷会损坏。
返回列表