千家信息网

Elasticsearch集群数据备份与恢复的方法是什么

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"Elasticsearch集群数据备份与恢复的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Elasticsearch集群数据
千家信息网最后更新 2026年11月02日Elasticsearch集群数据备份与恢复的方法是什么

本篇内容主要讲解"Elasticsearch集群数据备份与恢复的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Elasticsearch集群数据备份与恢复的方法是什么"吧!

简介

  • Elasticsearch 拥有副本机制来保障集群的高可用,然而无法解决如下情况的数据丢失:

    • 主副本所在机器存储全部损坏。

    • 误删除索引数据。

    • 升级失败,数据无法回滚。

  • 定期对数据做备份,按需恢复可以很好的解决如上问题。

  • Elasticsearch 提供了 Snapshot 和 Restore API 用于对集群数据完成备份与恢复。

  • 数据备份的过程可以简单理解成将本地数据文件同步到远程仓库(repository) 的过程。

  • 支持全量和增量备份。

  • repository 常见有如下类型: fs / S3 / HDFS / Azure / Google Cloud Storage。

实战

1 创建原始索引并导入数据

PUT _template/blog-template{  "index_patterns": [    "blog-*"  ],  "settings": {    "number_of_shards": 3,    "number_of_replicas": 1  },  "mappings": {    "dynamic_templates": [      {        "integers": {          "match": "int_*",          "mapping": {            "type": "integer"          }        }      },      {        "strings": {          "match_mapping_type": "string",          "mapping": {            "type": "keyword",            "ignore_above": 256          }        }      }    ],    "properties": {      "title": {        "type": "text"      }    }  }}PUT blog-testPOST blog-test/_bulk{"index":{}}{"title":"elasticsearch best practice","author_firstname":"tony","author_lastname":"song","tags":"elasticsearch ,logstash","int_age":18,"locale":"zh,en"}{"index":{}}{"title":"elastic stack release V5","author_firstname":"shay","author_lastname":"banon","tags":"elk ,elasticsearch,release","int_age":28,"locale":"zhc,en"}{"index":{}}{"title":"kibana tutorial","author_firstname":"zen","author_lastname":"wei","tags":"","int_age":38,"locale":"zhc,en"}GET blog-testGET blog-test/_search

2 修改elasticsearch配置文件

修改 elasticsearch.yml 配置文件,增加如下配置:

path.repo: ["/home/elastic/backup"]

重启elasticsearch进程,查看创建的repo:

GET _cluster/settings?include_defaults&filter_path=*.path.repo#输出结果:{  "defaults" : {    "path" : {      "repo" : [        "/home/elastic/backup"      ]    }  }}

3 创建关联 repository

#创建关联 repositoryPUT /_snapshot/my_fs_backup{    "type": "fs",    "settings": {        "location": "/home/elastic/backup/my_fs_backup",        "compress": true    }}

查看创建的关联:

GET _snapshot/my_fs_backup#输出结果:{  "my_fs_backup" : {    "type" : "fs",    "settings" : {      "compress" : "true",      "location" : "/home/elastic/backup/my_fs_backup"    }  }}

查看在哪个node上创建了关联:

POST _snapshot/my_fs_backup/_verify#输出结果{  "nodes" : {    "pMrJwVGSQcSgeTZdh71QRw" : {      "name" : "node1"    }  }}

4 执行 snapshot

  • indices:做快照的索引。

  • wait_for_completion=true:是否等待完成快照后再响应,如果为true会等快照完成后才响应。(默认为false,不等快照完成立即响应)

  • ignore_unavailable: 设置为true时,当创建快照时忽略不存在的索引。

  • include_global_state: 设置为false时,当某个索引所有的主分片不是全部的都可用时,可以完成快照。

#创建snapshot_1对blog-test索引做快照PUT /_snapshot/my_fs_backup/snapshot_1?wait_for_completion=true{  "indices": "blog-test",  "ignore_unavailable": true,  "include_global_state": false}

查看创建的快照:

GET /_snapshot/my_fs_backup/snapshot_*#GET /_snapshot/my_fs_backup/_all 看所有的#输出结果:{  "snapshots" : [    {      "snapshot" : "snapshot_1",      "uuid" : "FEbAt3BiR1SAiBkO7pfoZg",      "version_id" : 7020199,      "version" : "7.2.1",      "indices" : [        "blog-test"      ],      "include_global_state" : false,      "state" : "SUCCESS",      "start_time" : "2021-02-06T03:28:40.001Z",      "start_time_in_millis" : 1612582120001,      "end_time" : "2021-02-06T03:28:40.213Z",      "end_time_in_millis" : 1612582120213,      "duration_in_millis" : 212,      "failures" : [ ],      "shards" : {        "total" : 3,        "failed" : 0,        "successful" : 3      }    }  ]}

查看快照状态:

GET _snapshot/my_fs_backup/snapshot_1/_status#输出结果:{  "snapshots" : [    {      "snapshot" : "snapshot_1",      "repository" : "my_fs_backup",      "uuid" : "FEbAt3BiR1SAiBkO7pfoZg",      "state" : "SUCCESS",      "include_global_state" : false,      "shards_stats" : {        "initializing" : 0,        "started" : 0,        "finalizing" : 0,        "done" : 3,        "failed" : 0,        "total" : 3      },      "stats" : {        "incremental" : {          "file_count" : 12,          "size_in_bytes" : 15608        },        "total" : {          "file_count" : 12,          "size_in_bytes" : 15608        },        "start_time_in_millis" : 1612582120074,        "time_in_millis" : 108      },      "indices" : {        "blog-test" : {          "shards_stats" : {            "initializing" : 0,            "started" : 0,            "finalizing" : 0,            "done" : 3,            "failed" : 0,            "total" : 3          },          "stats" : {            "incremental" : {              "file_count" : 12,              "size_in_bytes" : 15608            },            "total" : {              "file_count" : 12,              "size_in_bytes" : 15608            },            "start_time_in_millis" : 1612582120074,            "time_in_millis" : 108          },          "shards" : {            "0" : {              "stage" : "DONE",              "stats" : {                "incremental" : {                  "file_count" : 4,                  "size_in_bytes" : 5104                },                "total" : {                  "file_count" : 4,                  "size_in_bytes" : 5104                },                "start_time_in_millis" : 1612582120143,                "time_in_millis" : 39              }            },            "1" : {              "stage" : "DONE",              "stats" : {                "incremental" : {                  "file_count" : 4,                  "size_in_bytes" : 5265                },                "total" : {                  "file_count" : 4,                  "size_in_bytes" : 5265                },                "start_time_in_millis" : 1612582120074,                "time_in_millis" : 25              }            },            "2" : {              "stage" : "DONE",              "stats" : {                "incremental" : {                  "file_count" : 4,                  "size_in_bytes" : 5239                },                "total" : {                  "file_count" : 4,                  "size_in_bytes" : 5239                },                "start_time_in_millis" : 1612582120113,                "time_in_millis" : 21              }            }          }        }      }    }  ]}

5 恢复 snapshot

  • rename_pattern: 正则匹配原索引名

  • rename_replacement: 将匹配到的字段用于重命名新索引

POST _snapshot/my_fs_backup/snapshot_1/_restore{  "indices": "blog-test",  "ignore_unavailable": true,  "rename_pattern": "(.+)",  "rename_replacement": "restored_$1"}

查询新索引的数据:

GET restored_blog-test/_search

到此,相信大家对"Elasticsearch集群数据备份与恢复的方法是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

数据 快照 索引 备份 集群 结果 输出 数据备份 方法 关联 文件 配置 内容 副本 过程 学习 查询 原始 实用 更深 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网络科技 湖南永感互联网科技有限公司 工业互联网科技新基建 朗新科技与工业互联网 有木互联网科技 互联网高科技股票 天扬科技互联网广告 上海电发互联网科技有限公司 互联网企业和科技型企业 互联网对科技的发展 黑科技闪耀互联网之光 青岛科技大学互联网大赛研究生 威龙国际互联网科技公司 萌小萌互联网科技河南有限公司 中国新注册互联网科技 北京互联网科技类企业分布 中国互联网公司的科技投入 互联网科技创新创业项目 中国主要互联网科技公司 广州全民伙伴互联网科技有限公司 广东万易互联网科技有限公司惠州分公司 互联网金融监管科技数据 互联网科技的 小马过河互联网科技 伴你行互联网科技有限公司 卫星互联网科技股票 湖南诚度互联网科技有限公司 彤创互联网科技有限公司 河南住房之家互联网科技 科技互联网海报
0