1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Elasticsearch的数据备份与恢复

Elasticsearch的数据备份与恢复

时间:2019-06-09 06:38:58

相关推荐

Elasticsearch的数据备份与恢复

1、序言

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

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

2、ES环境

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

/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_0926 为例,后面的执行都以此为例,有以下两种方式。

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

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

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

DELETE _snapshot/backup/bk_0926

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

{"acknowledged": true}

3.4 开始备份数据

备份数据一样是与删除数据同样,直接调用ES的接口实现的,有以下两种方式。

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

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

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

PUT _snapshot/backup/bk_0926?wait_for_completion=true

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

{"snapshot": {"snapshot": "bk_0926","uuid": "K4fze5eGSvOwot_xWtz0Hw","version_id": 6050399,"version": "6.5.3","indices": ["first_index"],"include_global_state": true,"state": "SUCCESS","start_time": "-09-27T05:36:39.398Z","start_time_in_millis": 1569562599398,"end_time": "-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_0926","uuid": "K4fze5eGSvOwot_xWtz0Hw","version_id": 6050399,"version": "6.5.3","indices": ["first_index"],"include_global_state": true,"state": "SUCCESS","start_time": "-09-27T05:36:39.398Z","start_time_in_millis": 1569562599398,"end_time": "-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-0626.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_0926/_restore

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

POST _snapshot/backup/bk_0926/_restore

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

{"accepted": true}

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

5、总结

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。