Elasticsearch的数据备份与恢复

您所在的位置:网站首页 日志适合存储在es吗苹果 Elasticsearch的数据备份与恢复

Elasticsearch的数据备份与恢复

2023-12-15 13:06| 来源: 网络整理| 查看: 265

1、序言

Elasticsearch默认配置是数据持久化的,就是ES会定时地把缓存数据刷新到硬盘,从而达到数据持久化地效果。在生产环境中,ES的数据持久化是必须的,防止出现断电时数据的丢失。固然,除了数据持久化外,咱们也是得作到数据备份的,防止出现数据损坏时没法恢复数据的状况。

下面开始介绍ES的数据备份和恢复。

2、ES环境

在开始ES的数据备份和恢复以前,咱们得确保服务器的ES环境时搭建好的,这里就很少作介绍了,如有不懂的能够查看这篇ES入门文章了解下: https://blog.csdn.net/qq_15092079/article/details/81411334。

在搭建ES环境中须要注意的几点:

JDK的安装配置,ES的启动时依赖于JDK的须要另外建立个用户来启动ES,root用户是不能启动ES的启动时的vm.max_map_count的报错问题ES默认是只能让本机访问,若须要远程访问还需修改文件elasticsearch.yml的network.hostkibana数据可视化界面的安装 3、备份数据 3.1 配置文件elasticsearch.yml

在配置文件config/elasticsearch.yml 中添加一行数据,设置ES备份的快照数据存储路径。如果没有此目录则须要自行建立。配置好后,须要重启ES

path.repo: ["/usr/local/elasticsearch/snapshot"] 3.2 建立仓库

其实就是在ES库中建立一个备份存储的目的仓库,这里以仓库名称为 backup 为例,有以下两种方式。

1)在linux服务器上执行如下命令。

curl -H "Content-Type: application/json" -XPUT -u elastic:xxx http://ES的IP:9200/_snapshot/backup -d '{"type": "fs","settings": {"location": "/usr/local/elasticsearch/snapshot"}}'

2)在kibana的Dev Tools开发工具中调用接口。

PUT _snapshot/backup { "type": "fs", "settings": { "location": "data_bk", "compress": true, "max_snapshot_bytes_per_sec" : "50mb", "max_restore_bytes_per_sec" : "50mb" } }

调用参数说明:

compress,是否压缩,默认为是。 max_snapshot_bytes_per_sec,每一个节点快照速率。默认40mb/s。 max_restore_bytes_per_sec,节点恢复速率。默认40mb/s。 返回结果以下,则说明建立成功。

{ "acknowledged": true } 3.3 删除备份数据

在备份数据以前,最好是先根据备份数据的名称删除原来已经备份好的数据。相同名称的备份数据是不能重复备份的。

这里以备份数据的名称为 bk_20190926 为例,后面的执行都以此为例,有以下两种方式。 1)在linux服务器上执行如下命令。

curl -XDELETE http://ES的ip:端口/_snapshot/backup/bk_20190926

2)在kibana的Dev Tools开发工具中调用接口。

DELETE _snapshot/backup/bk_20190926

返回结果以下,则说明删除成功。

{ "acknowledged": true } 3.4 开始备份数据

备份数据一样是与删除数据同样,直接调用ES的接口实现的,有以下两种方式。 1)在linux服务器上执行如下命令。

curl -XPUT http://ES的ip:端口/_snapshot/backup/bk_20190926?wait_for_completion=true

2)在kibana的Dev Tools开发工具中调用接口。

PUT _snapshot/backup/bk_20190926?wait_for_completion=true

返回结果以下,则说明已经备份成功。

{ "snapshot": { "snapshot": "bk_20190926", "uuid": "K4fze5eGSvOwot_xWtz0Hw", "version_id": 6050399, "version": "6.5.3", "indices": [ "first_index" ], "include_global_state": true, "state": "SUCCESS", "start_time": "2019-09-27T05:36:39.398Z", "start_time_in_millis": 1569562599398, "end_time": "2019-09-27T05:36:39.723Z", "end_time_in_millis": 1569562599723, "duration_in_millis": 325, "failures": [], "shards": { "total": 5, "failed": 0, "successful": 5 } } }

同时,能够在ES所在的服务器的目录/usr/local/elasticsearch/snapshot/data_bk下查看到增长了不少文件,这些就是备份数据所需的文件。

3.5 查看备份数据

备份完数据后,直接在服务器上能够看到这些备份的文件,可是这些文件并非一眼就能看出你备份了哪些数据的,此时你能够经过调用ES的接口来查看你备份了哪些数据。一样有两种方式调用。 1)在linux服务器上执行如下命令。

curl -XGET http://ES的ip:端口/_snapshot/backup/_all

2)在kibana的Dev Tools开发工具中调用接口。

GET _snapshot/backup/_all

返回结果以下,你备份了多少快照均可以在这里看到,snapshots列表的最后一个元素就是你最近备份的快照。

{ "snapshots": [ { "snapshot": "bk_20190926", "uuid": "K4fze5eGSvOwot_xWtz0Hw", "version_id": 6050399, "version": "6.5.3", "indices": [ "first_index" ], "include_global_state": true, "state": "SUCCESS", "start_time": "2019-09-27T05:36:39.398Z", "start_time_in_millis": 1569562599398, "end_time": "2019-09-27T05:36:39.723Z", "end_time_in_millis": 1569562599723, "duration_in_millis": 325, "failures": [], "shards": { "total": 5, "failed": 0, "successful": 5 } } ] } 4、恢复数据

数据备份好了,若是真的出现了不可逆的数据损坏状况,此时就能够进行数据恢复了。

4.1 备份data文件夹

data文件夹其实就是当前ES的数据存储地,防止恢复数据出现异常,先把ES目录下面的data目录备份一下。

tar -cvf data-20190626.tar.gz data 4.2 清空数据

恢复数据以前,先把当前ES的数据清空掉。有以下两种方式。

(1)在linux服务器上执行如下命令。

curl -XDELETE http://ES的ip:端口/_all

(2)在kibana的Dev Tools开发工具中调用接口。

DELETE _all

返回结果以下,则说明清空数据成功。

{ "acknowledged": true } 4.3 恢复数据

恢复数据一样有以下两种方式操做。

(1)在linux服务器上执行如下命令。

curl -XPOST http://ES的ip:端口/_snapshot/backup/bk_20190926/_restore

(2)在kibana的Dev Tools开发工具中调用接口。

POST _snapshot/backup/bk_20190926/_restore

返回结果以下,则说明恢复数据成功。

{ "accepted": true }

至此,ES的数据备份和恢复就介绍完啦!

5、总结

这里只是讲解了手动的操做ES的数据备份和恢复,在程序里面咱们同样能够经过调用ES的接口来进行数据备份和恢复,例如经过java程序来定时天天进行ES地数据备份,而后删除昨天或前天的备份数据,只保留一份或两份备份数据,以此来节约磁盘空间。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3