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

Elasticsearch 备份和恢复

Elasticsearch 主要通过 Snapshot(快照)和 Restore(恢复) 功能来实现备份和恢复。

1. 核心概念

什么是 Snapshot?

  • 是集群状态的增量备份

  • 可以备份到各种存储库(Repository)

  • 支持全量和增量备份

  • 可以备份整个集群或特定索引

支持的后端存储:

  • 共享文件系统 (FS) - 最常用

  • AWS S3

  • Google Cloud Storage

  • Azure Blob Storage

  • HDFS (Hadoop)

2. 配置备份存储库(Repository)

2.1 共享文件系统配置(最常用)

在 elasticsearch.yml 中配置:

yaml

path.repo: ["/path/to/backup/dir", "/another/backup/dir"]

创建文件系统存储库:

json

PUT /_snapshot/my_backup_repo
{"type": "fs","settings": {"location": "/mnt/elasticsearch_backups","compress": true,"max_snapshot_bytes_per_sec": "50mb","max_restore_bytes_per_sec": "50mb"}
}

2.2 AWS S3 配置(需要安装插件)

json

PUT /_snapshot/my_s3_backup
{"type": "s3","settings": {"bucket": "my-elasticsearch-backups","region": "us-west-2","base_path": "production","access_key": "your-access-key","secret_key": "your-secret-key"}
}

3. 备份操作(Snapshot)

3.1 创建快照

json

PUT /_snapshot/my_backup_repo/snapshot_20231001
{"indices": "index1,index2,logstash-*",  // 指定要备份的索引"ignore_unavailable": true,            // 忽略不存在的索引"include_global_state": false,         // 是否包含集群全局状态"metadata": {"taken_by": "admin","purpose": "monthly_backup"}
}

3.2 查看快照信息

json

// 查看所有快照
GET /_snapshot/my_backup_repo/_all// 查看特定快照状态
GET /_snapshot/my_backup_repo/snapshot_20231001/_status// 查看存储库信息
GET /_snapshot/my_backup_repo

3.3 删除快照

json

DELETE /_snapshot/my_backup_repo/snapshot_20231001

4. 恢复操作(Restore)

4.1 基本恢复

json

POST /_snapshot/my_backup_repo/snapshot_20231001/_restore
{"indices": "index1,index2",           // 指定要恢复的索引"ignore_unavailable": true,"include_global_state": false,"rename_pattern": "index_(.+)",       // 重命名模式"rename_replacement": "restored_index_$1",  // 重命名替换"include_aliases": false
}

4.2 恢复到不同集群

json

// 在新集群上注册相同的存储库
PUT /_snapshot/my_backup_repo
{"type": "fs","settings": {"location": "/mnt/elasticsearch_backups"}
}// 然后执行恢复
POST /_snapshot/my_backup_repo/snapshot_20231001/_restore
{"indices": "*","include_global_state": false
}

5. 自动化备份策略

5.1 使用 Curator 工具自动化

安装 Curator:

bash

pip install elasticsearch-curator

创建 curator.yml:

yaml

client:hosts:- localhostport: 9200use_ssl: False

创建 action.yml:

yaml

actions:1:action: snapshotdescription: "Create monthly snapshot"options:repository: my_backup_reponame: monthly-snapshot-%Y.%m.%dignore_unavailable: Falseinclude_global_state: Falsewait_for_completion: Truefilters:- filtertype: patternkind: prefixvalue: logstash-2:action: delete_snapshotsdescription: "Delete snapshots older than 30 days"options:repository: my_backup_repodisable_action: Falsefilters:- filtertype: agesource: creation_datedirection: olderunit: daysunit_count: 30

5.2 使用 Elasticsearch 的 SLM(Snapshot Lifecycle Management)

创建生命周期策略:

json

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

立即执行策略:

json

POST /_slm/policy/daily-snapshots/_execute

6. 完整备份恢复示例

场景:迁移数据到新集群

源集群备份:

json

// 1. 创建存储库
PUT /_snapshot/migration_repo
{"type": "fs","settings": {"location": "/shared_backups/migration"}
}// 2. 创建快照
PUT /_snapshot/migration_repo/full_migration_snapshot
{"indices": "products,users,orders","include_global_state": false
}

目标集群恢复:

json

// 1. 配置相同的存储库路径
// 确保目标集群的 elasticsearch.yml 中有:
// path.repo: ["/shared_backups/migration"]// 2. 注册存储库
PUT /_snapshot/migration_repo
{"type": "fs","settings": {"location": "/shared_backups/migration"}
}// 3. 恢复数据
POST /_snapshot/migration_repo/full_migration_snapshot/_restore
{"indices": "products,users,orders","ignore_unavailable": true,"include_global_state": false
}

7. 监控和管理

查看备份状态

json

GET /_snapshot/_status
GET /_snapshot/my_backup_repo/_status

查看恢复状态

json

GET /_recovery?human&detailed=true

取消恢复操作

json

DELETE /_restore/snapshot_20231001

8. 最佳实践和建议

  1. 定期测试恢复:确保备份可用

  2. 监控存储空间:快照会占用磁盘空间

  3. 使用增量备份:Elasticsearch 自动进行增量备份

  4. 分离存储:备份存储与数据存储分离

  5. 权限控制:保护备份存储库的访问权限

  6. 文档化流程:记录备份恢复步骤

  7. 版本兼容性:确保备份和恢复的集群版本兼容

9. 常见问题解决

问题1:存储库路径未配置

错误path.repo is not set
解决:在 elasticsearch.yml 中添加 path.repo: ["/your/backup/path"]

问题2:权限不足

错误Permission denied
解决:确保 Elasticsearch 用户对备份目录有读写权限

问题3:存储空间不足

监控:定期检查备份目录的磁盘使用情况

问题4:恢复时索引已存在

解决:先删除冲突的索引,或者使用重命名功能

json

POST /_snapshot/my_backup_repo/snapshot_20231001/_restore
{"indices": "old_index","rename_pattern": "old_index","rename_replacement": "restored_old_index"
}

通过这套完整的备份恢复机制,可以确保 Elasticsearch 数据的安全性和可恢复性。


文章转载自:

http://7nrgowYB.rdnpg.cn
http://0CJ9rBv4.rdnpg.cn
http://YYEp2sWJ.rdnpg.cn
http://DSOy99S5.rdnpg.cn
http://rqsujODI.rdnpg.cn
http://H5o322SZ.rdnpg.cn
http://zlWK79Vy.rdnpg.cn
http://uFpBB52z.rdnpg.cn
http://xxOCU25I.rdnpg.cn
http://1mUp3LN3.rdnpg.cn
http://rAMIBP12.rdnpg.cn
http://yxjypsNl.rdnpg.cn
http://baFtGVyl.rdnpg.cn
http://drzgUjj8.rdnpg.cn
http://tuu09U8c.rdnpg.cn
http://soTYcRV2.rdnpg.cn
http://pnm9RvoI.rdnpg.cn
http://s98RvYZc.rdnpg.cn
http://SXijO1Q6.rdnpg.cn
http://VCxxJX5Q.rdnpg.cn
http://qqDIyLq1.rdnpg.cn
http://fhhVo1r5.rdnpg.cn
http://ZYZC4OpJ.rdnpg.cn
http://cH4OOamz.rdnpg.cn
http://1CLU3phQ.rdnpg.cn
http://sZlK76A8.rdnpg.cn
http://XNPCINBw.rdnpg.cn
http://RhyaAY44.rdnpg.cn
http://EPUjUx9f.rdnpg.cn
http://hneBT2t8.rdnpg.cn
http://www.dtcms.com/a/366181.html

相关文章:

  • 软考中级习题与解答——第二章_程序语言与语言处理程序(2)
  • RTC实时时钟RX8025SA国产替代FRTC8025S
  • git基础命令 git基础操作
  • 2025市面上比较实用的财会行业证书,最值得考的8个职业证书推荐
  • 开源与定制化直播电商系统源码对比:如何选择开发方案?
  • Spring 事务提交成功后执行额外逻辑
  • Attention-Based Map Encoding for Learning Generalized Legged Locomotion
  • MMD动画(二)动作制作
  • Hoppscotch:开源轻量API测试工具,秒启动高效解决临时接口测试需求
  • 【机器学习】HanLP+Weka+Java算法模型
  • 算法随笔(一)
  • Electron 执行python脚本
  • Dubbo(分布式RPC调用和分布式文件储存)
  • 如何简单理解状态机、流程图和时序图
  • 成为一个年薪30W+的FPGA工程师是一种什么体验?
  • 进程与线程详解, IPC通信与RPC通信对比,Linux前台与后台作业
  • 在国企干了 5 年 Java,居然不知道 RPC?这正常吗?
  • VU9P板卡设计方案:基于VU9P的32@ SFP28+4@ QSFP28路光纤交换板卡
  • Zynq开发实践(FPGA之uart发送)
  • 如何在 IntelliJ IDEA 中进行全局替换某个字段(或文本)
  • 案例精述 | 防护即智能 Fortinet赋能英科全栈安全重构实践
  • React学习之路永无止境:下一步,去向何方?
  • C#上位机解决ComboBox下拉框加载卡顿问题探析
  • wpf中资源的使用
  • 【Ubuntu扩容】Ubuntu启动项丢失、增加硬盘相关操作记录贴
  • Dubbo分布式服务框架全解析
  • 十一、容器化 vs 虚拟化-K8s-Kustomize
  • 免费低代码谁更优?斑斑与氚云深度对比,中小企业数字化转型选对平台很关键
  • 热烈庆祝“中国抗战胜利80周年”,织信低代码助力国之重器砥砺前行!
  • vue+elementUI 进行表格行内新增及校验,同行其他输入框数据影响当前输入框校验结果