ES数据备份与恢复

场景:ES线上的数据和服务迁移到另外的机器上去

老ES机器ip:172.16.0.1
新ES机器ip:172.16.0.2

一. 首先,

  1. 在备份之前要在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

  

posted @   智昕  阅读(623)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示