首页 > 其他分享 >Elasticsearch的数据备份与恢复

Elasticsearch的数据备份与恢复

时间:2023-06-28 14:22:57浏览次数:45  
标签:恢复 备份 数据备份 bk snapshot Elasticsearch 数据 ES

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.host
kibana数据可视化界面的安装


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地数据备份,而后删除昨天或前天的备份数据,只保留一份或两份备份数据,以此来节约磁盘空间。
————————————————

原文链接:https://blog.csdn.net/chj_1224365967/article/details/121037763

标签:恢复,备份,数据备份,bk,snapshot,Elasticsearch,数据,ES
From: https://www.cnblogs.com/walkersss/p/17511288.html

相关文章

  • U8备份账套恢复为不同账套号,进行删除操作数据时提示:当前对应的账套不存在处理方法
    现象:U8备份账套恢复为不同账套号,进行删除操作数据时提示:当前对应的账套不存在 处理方法:该账套的原始账套存在协同,我们在协同中添加一个账套协同即可解决,使用完成后可以删除 ......
  • (转)基于velero+minio对k8s进行备份和恢复
    原文:https://www.cnblogs.com/cyh00001/p/16548774.html一、velero介绍Velero是由vmware公司团队研发开源工具,用于安全地备份、恢复和迁移Kubernetes集群和持久卷。它可以在本地和公共云中运行。Velero由一个在您的Kubernetes集群中作为部署运行的服务器进程和一个命令行......
  • 1、Elasticsearch单机与集群的安装(包安装、二进制安装与Docker安装)
    ElasticsearchElasticsearch是一个实时的全文搜索,存储库和分析引擎https://www.elastic.co/cn/what-is/elasticsearchElasticsearch在速度和可扩展性方面都表现出色,而且还能够索引多种类型的内容,可用于多种场景:应用程序搜索网站搜索企业搜索日志处理和分析基础设施指标和......
  • MUR20100DC-ASEMI快恢复二极管MUR20100DC
    编辑-ZMUR20100DC在TO-263封装里采用的2个芯片,其尺寸都是102MIL,是一款共阴极快恢复对管。MUR20100DC的浪涌电流Ifsm为200A,漏电流(Ir)为10uA,其工作时耐温度范围为-55~150摄氏度。MUR20100DC采用抗冲击硅芯片材质,里面有2颗芯片组成。MUR20100DC的电性参数是:正向电流(Io)为20A,反向耐压......
  • ASEMI快恢复二极管MUR20100DCR的性能与应用
    编辑-Z本文主要介绍了MUR20100DCR二极管的性能与应用。我们将对MUR20100DCR二极管的基本性能、不同领域的应用和优势与不足进行分析。 1、MUR20100DCR二极管的基本性能MUR20100DCR二极管是一种高性能的超快速二极管,具有高电压、高电流和低漏电流等特点。它采用了先进的制造工艺,使......
  • MUR20100DC-ASEMI快恢复二极管MUR20100DC
    编辑-ZMUR20100DC在TO-263封装里采用的2个芯片,其尺寸都是102MIL,是一款共阴极快恢复对管。MUR20100DC的浪涌电流Ifsm为200A,漏电流(Ir)为10uA,其工作时耐温度范围为-55~150摄氏度。MUR20100DC采用抗冲击硅芯片材质,里面有2颗芯片组成。MUR20100DC的电性参数是:正向电流(Io)为20A,反向耐......
  • ASEMI快恢复二极管MUR20100DCR的性能与应用
    编辑-Z本文主要介绍了MUR20100DCR二极管的性能与应用。我们将对MUR20100DCR二极管的基本性能、不同领域的应用和优势与不足进行分析。 1、MUR20100DCR二极管的基本性能MUR20100DCR二极管是一种高性能的超快速二极管,具有高电压、高电流和低漏电流等特点。它采用了先进的制造工......
  • 【服务器数据恢复】HP-Unix小机raid5故障导致上层LUN无法访问的数据恢复案例
    服务器数据恢复环境:一台服务器中有一组由数块SAS硬盘组建的RAID5阵列,阵列中有1块热备盘,上层部署OA以及Oracle数据库。服务器故障:该磁盘阵列中有2块硬盘出现故障先后离线,RAID5阵列瘫痪,上层LUN无法正常使用。经过检测发现硬盘无物理故障,无坏道。服务器数据恢复过程:1、将故障服务......
  • ElasticSearch - activemq - tomcat 开机自启动
    [root@qwy~]#cat/etc/init.d/elastisearch|grep-v'^#'#!/bin/bash#chkconfig:23455525#description:SSHisaprotocolforsecureremoteshellaccess.exportJAVA_HOME=/usr/local/java/jdk/exportJAVA_BIN=/usr/local/java/jdk/binexportP......
  • redis安装-备份-恢复 -- redislive -- web管理工具
    1.安装参考:https://www.jb51.net/article/146744.htm2.安装ruby2.3.31.gpg2--keyserverhkp://keys.gnupg.net--recv-keysD39DC0E32.curl-Lget.rvm.io|bash-sstable3.rvm生效source/usr/local/rvm/scripts/rvm4.安装一个版本rvminstall2.3.35.设置默认rubyrvmu......