ES数据备份与恢复
场景:ES线上的数据和服务迁移到另外的机器上去
老ES机器ip:172.16.0.1
新ES机器ip:172.16.0.2
一. 首先,
- 在备份之前要在es/config/elasticsearch.yml添加仓库配置:
1 | path.repo: [ "/mnt/backup/es_backup" ] |
2.重启ES
二. 在老机器上
3.创建备份仓库
在/mnt/backup下新建名为es_backup的仓库
1 2 3 4 5 6 7 8 9 10 11 | POST /_snapshot/es_backup { "type" : "fs" , "settings" : { "location" : "/mnt/backup/es_backup" , "compress" : true , "chunk_size" : "1g" , "max_snapshot_bytes_per_sec" : "50m" , "max_restore_bytes_per_sec" : "50m" } } |
- max_snapshot_bytes_per_sec 和max_restore_bytes_per_sec 为了限制备份和恢复时的速度
- 如果新建仓库的时候报错 "reason": "failed to create blob container" access_denied_exception 请检查/data/es/snapshot文件夹权限
4.备份数据
1 | PUT /_snapshot/es_backup/ss_20220916?wait_for_completion= true |
- 如果不希望快照作为后台进程运行,可以通过添加wait_for_completion=true参数,使其在前台运行,知道备份完成。
- 如果想备份部分索引,可以加上indices 参数:
1 2 3 4 | PUT /_snapshot/es_backup/ss_20220916?wait_for_completion= true { "indices" : "index_1,index_2" }' |
- 终止备份:
1 | DELETE /_snapshot/es_backup/ss_20220916 |
- 查看备份信息
1 | GET /_snapshot/es_backup/ss_20220916 |
接下来到恢复数据至新服务器上
三. 在新机器上
(将备份数据打包传到新机器上,并解压到/mnt/backup/es_backup目录下)
6.恢复数据
与之前步骤一致,先修改配置文件
1 | path.repo:[ "/mnt/backup/es_backup" ], |
7.创建备份仓库bro_backup,然后执行恢复命令:
1 2 3 4 5 6 7 8 9 10 11 | POST /_snapshot/es_backup { "type" : "fs" , "settings" : { "location" : "/mnt/backup/es_backup" , "compress" : true , "chunk_size" : "1g" , "max_snapshot_bytes_per_sec" : "50m" , "max_restore_bytes_per_sec" : "50m" } } |
8.执行恢复命令
1 2 | POST /_snapshot/bro_backup/ss_20220916/_restore { "ignore_unavailable" : true , "include_global_state" : false } |
- 如果只想恢复某些分片的数据,还可以在json参数里加{"indices": "game_info"},以指定只恢复game_info分片数据。
9.查看恢复的分片数据
1 | GET /_cat/indices?v |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义