kibana快照存储库实现定时备份elasticsearch集群索引

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 利用kibana的快照存储库备份es索引文章目录利用kibana的快照存储库备份es索引1.快照存储库备份es索引2.部署nfs存储并在es节点进行挂载2.1.部署nfs存储2.2.配置es集群各节点增加nfs存储配置3.在kibana界面创建快照存储库3.1.点击Managerment---快照存储库---注册存储库3.2.填写存储库名称,存储库类型选择共享文件系统3.3.填写存储库信息3.4.点击注册之后点击验证存储库3.5.验证存储库成功4.es索引库备份4.1.创建linuxbook索引库并插入数据4.2.在es上查看新建索引的数据

1.快照存储库备份es索引

es的索引库也是需要备份的,我们可以通过kibana上的快照存储库,给索引每天创建快照,定时备份


注意:使用nfs作为索引备份存储路径时,一定要为存储路径的属组和属主全部改成elasticsearch,否则会报没权限


但是修改属主属组有个问题,有的es集群的elasticsearch用户的uid和其他的会不同,这时就导致在nfs上改了属主属组但是在某个es节点不识别这个uid,这也会导致没权限,最好的解决办法就是在es安装的时候首先创建elasticsearch用户并且制定uid号,这样就能保证有权限使用nfs存储了


针对es索引的备份,可以创建一个快照,快照就相当于一个备份,这个快照里面包含了所有的索引,可以借助kibana上的快照存储库,定时的进行索引备份


es索引备份恢复大致思路:首先针对要备份的索引创建一个快照01,然后在往索引里面添加一些数据,再创建一个快照02,然后还原01查看效果,在还原02查看效果


kibana快照存储备份的好处就是:备份全部索引,每次备份占用的资源特别小,且备份时间在几秒左右

环境准备image.png

2.部署nfs存储并在es节点进行挂载

2.1.部署nfs存储

[root@kibana ~]# yum -y install nfs-utils
[root@kibana ~]# vim /etc/exports
/data/es_backup 192.168.16.0/24(rw,sync,no_root_squash)
[root@kibana ~]# systemctl restart nfs
[root@kibana ~]# mkdir /data/es_backup
[root@kibana ~/soft]# showmount -e
Export list for kibana:
/data/es_backup 192.168.16.0/24

2.2.配置es集群各节点增加nfs存储配置

所有节点都配置

1.挂载nfs
[root@elasticsearch ~]# mkdir /data/es_backup
[root@elasticsearch ~]# mount 192.168.16.105:/data/es_backup/ /data/es_backup
2.配置es指定存储路径
[root@elasticsearch ~]# vim /etc/elasticsearch/elasticsearch.yml 
path.repo: /data/es_backup
[root@elasticsearch ~]# systemctl restart elasticsearch
3.授权,在nfs上操作
[root@kibana ~]# chmod 777 /data/es_backup/
[root@kibana ~]# chown -R elasticsearch.elasticsearch /data/es_backup/
如果nfs没有elasticsearch用户需要创建出来,并且uid和gid号要和es每个集群都保持一致

3.在kibana界面创建快照存储库

3.1.点击Managerment—快照存储库—注册存储库

3.2.填写存储库名称,存储库类型选择共享文件系统

名称:es索引备份

存储类型选择共享文件系统

3.3.填写存储库信息

位置(共享存储路径):/data/es_backup

块大小:100mb,根据实际来填写

3.4.点击注册之后点击验证存储库

点击验证存储库

3.5.验证存储库成功

点击右侧的验证存储库,状态是已连接表示存储库可以正常使用了,如果状态是未连接很有可能是nfs存储权限的问题

4.es索引库备份

4.1.创建linuxbook索引库并插入数据

创建一个linuxbook索引库,用于还原前后的效果对比

[root@elaticsearch ~]# curl -XPOST '127.0.0.1:9200/linuxbook/book?pretty' -H 'Content-Type: application/json' -d '{
"id": 1,
"book_name": "nginx",
"book_jg": "35¥",
"book_ys": "206",
"book_group": "web"
}'

插入5条数据数据,包含创建索引时的一条

[root@elasticsearch ~]#  curl -XPOST '127.0.0.1:9200/linuxbook/book?pretty' -H 'Content-Type: application/json' -d '{
"id": 2,
"book_name": "ansible",
"book_jg": "20¥",
"book_ys": "300",
"book_group": "zdh"
}'
[root@elasticsearch ~]#  curl -XPOST '127.0.0.1:9200/linuxbook/book?pretty' -H 'Content-Type: application/json' -d '{
"id": 3,
"book_name": "shell",
"book_jg": "20¥",
"book_ys": "3110",
"book_group": "shell"
}'
[root@elasticsearch ~]#  curl -XPOST '127.0.0.1:9200/linuxbook/book?pretty' -H 'Content-Type: application/json' -d '{
"id": 4,
"book_name": "tomcat",
"book_jg": "20¥",
"book_ys": "1024",
"book_group": "web"
}'
[root@elasticsearch ~]#  curl -XPOST '127.0.0.1:9200/linuxbook/book?pretty' -H 'Content-Type: application/json' -d '{
"id": 5,
"book_name": "python",
"book_jg": "20¥",
"book_ys": "11024",
"book_group": "python"
}'

4.2.在es上查看新建索引的数据

linuxbook索引已经创建,数据插入成功

4.3.创建一个快照01

一个快照里面包含所有的索引数据,可以每天定时制作一个快照,这就是es的备份方式

创建快照的命令只能在kibana上执行,在交互式使用curl命令,会报错,因为我们的存储库是中文的

PUT /_snapshot/es索引备份/es-backup-1-2021.1.26?wait_for_completion=true
解释:
  PUT             提交方式
  /_snapshot          快照目录
  es索引备份             存储库
  es-backup-1-2021.1.26     快照名称
  wait_for_completion     参数指定是在初始化快照(默认)后立即返回请求还是等待快照完成
整体来说就是在es索引备份存储库中创建一个es-backup-2021.1.26快照信息
curl命令
curl -XPUT '127.0.0.1:9200/_snapshot/es索引备份/es-backup-1-2021.1.26?wait_for_completion=true'

创建完快照点击Managerment—快照存储库—快照 就可以看到我们创建的快照信息了

4.4.查看快照信息

GET /_snapshot/es索引备份/es-backup-1-2021.1.26

可以看到有6个分片,那是因为有6个索引,一个索引一个分片

点击快照名也可以看快照的详细信息

服务器上生成的快照文件

5.在linuxbook索引中增加数据

5.1.在索引库中增加数据

在kibana上增加就可以了

POST /linuxbook/book?pretty
{
"id": 6,
"book_name": "linux",
"book_jg": "50¥",
"book_ys": "389",
"book_group": "system"
}
POST /linuxbook/book?pretty
{
"id": 7,
"book_name": "windows",
"book_jg": "50¥",
"book_ys": "789",
"book_group": "system"
}
POST /linuxbook/book?pretty
{
"id": 8,
"book_name": "jenkins",
"book_jg": "70¥",
"book_ys": "287",
"book_group": "jenkins"
}
POST /linuxbook/book?pretty
{
"id": 9,
"book_name": "elk",
"book_jg": "99¥",
"book_ys": "10000",
"book_group": "elk"
}
POST /linuxbook/book?pretty
{
"id": 10,
"book_name": "k8s",
"book_jg": "100¥",
"book_ys": "10000",
"book_group": "k8s"
}
POST /linuxbook/book?pretty
{
"id": 11,
"book_name": "prometheus",
"book_jg": "100¥",
"book_ys": "10000",
"book_group": "prometheus"
}

查看es上是否新增了数据

5.2.再创建一个快照02

这个快照里面包含了刚刚插入的6条数据

PUT /_snapshot/es索引备份/es-backup-2-2021.1.26?wait_for_completion=true

6.将索引还原出第一个快照的状态

es索引的还原可以选择不覆盖现有的索引,可以相当于将原来的索引复制一份出来

6.1.还原es-backup-1-2021.1.26快照中的linuxbook索引

es-backup-1-2021.1.26这个快照中的linuxbook索引只有5条数据,我们还原一下,查看是否正确

找到要还原的快照,点击类似于下载的按钮,可以看到提示的是还原

勾选取消所有索引,包括系统所有的按钮,如果这个勾选了,那么该快照中的所有索引都会被还原

只选择我们要还原的linuxbook索引,选择后下面会提示将还原1个索引

勾选重命名索引,将还原的索引库还原到es时改个名字,避免数据覆盖

将linuxbook索引重命名为linuxbook_huanyuan_20200126

继续点击下一步

摘要信息确认无误后点击还原快照

还原结束后会在还原状态那边看到是否成功

6.2.查看es上是否有还原的索引库

已经有我们还原的linuxbook索引并且也已经重命名了

6.3.查看数据是否是快照01时的5条数据

数据没问题,还原成功

7.还原第二个快照

第二个快照还原方式和第一个快照还原一模一样,只需要修改一下还原的索引名即可

还原成功

在es上查看数据,数据11条,完整无误

8.定时创建索引快照形成es索引库备份

8.1.通过shell脚本实现

1.编写脚本[root@elasticsearch /data/es_backup]# vim es_index_bak.sh
#!/bin/bashday=`date +%Y.%m.%d`
curl -XPUT "http://192.168.75.21:9200/_snapshot/es索引备份/es-index-backup-${day}"
2.赋权
[root@elasticsearch /data/es_backup]# chmod a+x es_index_bak.sh
3.制作定时任务,每天的零点30分进行备份
[root@elasticsearch /data/es_backup]# crontab -e
30 0 * * * /data/es_backup/es_index_bak.sh

8.2.通过快照存储库策略实现

8.2.1.创建策略

点击Managerment—快照存储库—策略—创建策略

填写策略信息

名称:es索引每日备份

快照名称:<es-backup-{now/d}> 官网配置:https://www.elastic.co/guide/en/elasticsearch/reference/7.6/date-math-index-names.html

存储库选择es索引备份,频率选择day,时间选择03:30

这样生成的下一次快照时间就是每天上午的11:30进行备份,设置11:30主要为了测试,一般还是要在凌晨进行备份,具体为什么选择03:30对应11:30,差了8个小时,这里也不是很清楚,估计是时区的问题,我是上午10点24创建的,时间写03:30就对应了下午的11:30,可以来回调整,直到根据自己的合理匹配了就可以

快照设置保持默认即可

设置快照的保留天数,这里保留30天

信息复查没问题后点击创建策略

8.2.2.查看策略信息

只要下次快照的时间是我们理想中的即可

快照策略也可以立即运行、编辑、删除

8.3.查看快照是否定时创建

备份已经自动创建

还原linuxbook索引,验证备份是否可用

查看es索引数据


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
1月前
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
63 5
|
9天前
|
存储 监控 安全
Elasticsearch 集群
【11月更文挑战第3天】
86 54
|
6天前
|
监控 API 索引
Elasticsearch集群健康检查
【11月更文挑战第4天】
20 3
|
9天前
|
存储 JSON 关系型数据库
Elasticsearch 索引
【11月更文挑战第3天】
27 4
|
16天前
|
存储 监控 安全
|
21天前
|
测试技术 API 开发工具
ElasticSearch7.6.x 模板及滚动索引创建及注意事项
ElasticSearch7.6.x 模板及滚动索引创建及注意事项
36 8
|
1月前
|
存储 监控 分布式数据库
百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现
本文介绍了百亿级数据存储架构的设计与实现,重点探讨了ElasticSearch和HBase的结合使用。通过ElasticSearch实现快速检索,HBase实现海量数据存储,解决了大规模数据的高效存储与查询问题。文章详细讲解了数据统一接入、元数据管理、数据一致性及平台监控等关键模块的设计思路和技术细节,帮助读者理解和掌握构建高性能数据存储系统的方法。
百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现
|
1月前
|
存储 缓存 监控
深入解析:Elasticsearch集群性能调优策略与最佳实践
【10月更文挑战第8天】Elasticsearch 是一个分布式的、基于 RESTful 风格的搜索和数据分析引擎,它能够快速地存储、搜索和分析大量数据。随着企业对实时数据处理需求的增长,Elasticsearch 被广泛应用于日志分析、全文搜索、安全信息和事件管理(SIEM)等领域。然而,为了确保 Elasticsearch 集群能够高效运行并满足业务需求,需要进行一系列的性能调优工作。
84 3
|
1月前
|
自然语言处理 搜索推荐 关系型数据库
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
这篇文章是关于Elasticsearch全文搜索引擎的学习指南,涵盖了基本概念、命令风格、索引操作、分词器使用,以及数据的增加、修改、删除和查询等操作。
21 0
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
|
1月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
117 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。