ELK索引备份,迁移及恢复

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介:

      由于公司的elasticsearch集群只是用了两台服务器。只要一台服务器数据丢失elasticsearch将丢失一半数据。所以数据的备份恢复就相当重要。elasticsearch 快照和恢复模块可以创建单个索引或者整个集群的快照到远程的仓库实现数据的备份及恢复。

下面以备份恢复.kibana索引为例

数据备份及恢复

1、修改elasticsearch配置文件

vim elasticsearch.yml

添加 path.repo: ["/mnt/bak"]

#设置仓库路径

备注如果你有多台ealsticsearch服务器作为集群可以先关闭分片服务器只在master主节点服务器上更改。或者在创建库的之前设置创建共享文件夹

2、创建仓库

1
2
3
4
5
6
7
8
9
curl -XPUT  http: //192 .168.10.49:9200 /_snapshot/my_backup  -d '
{
     "type" "fs" ,
     "settings" : {
         "location" "/mnt/bak" ,
"compress" true
     }
}
'

运行上面的命令后返回结果{"acknowledged":true}

说明仓库创建成功。

compress 是否压缩

max_snapshot_bytes_per_sec 制作快照的速度默认20mb/s

max_restore_bytes_per_sec 快照恢复的速度默认20mb/s

查看仓库

1
2
curl -GET http: //192 .168.10.49:9200 /_snapshot
{ "my_backup" :{ "type" : "fs" , "settings" :{ "compress" : "true" , "location" : "/mnt/bak" }}}

3、备份数据

1
curl -XPUT http: //192 .168.10.49:9200 /_snapshot/my_backup/snapshot_20161207

执行上面的命令会快照ealsticsearch上所有的索引。

如果需要快照指定的索引

1
2
3
4
5
curl -XPUT http: //192 .168.10.49:9200 /_snapshot/my_backup/snapshot_20161207  -d '
{
     "indices" ".kibana"
}
'

如果成功返回结果显示{"accepted":true}

4、查看备份

1
curl -XGET http: //192 .168.10.49:9200 /_snapshot/my_backup/snapshot_20161207

此命令是查看快照的情况返回的数据会比较多

{"snapshots":[{"snapshot":"snapshot_20161207","version_id":2030599,"version":"2.3.5","indices":["es-index-

.........中间N行数据..........

{"total":71,"failed":0,"successful":37}}]}

也可以使用下面的命令查看快照的状态

1
2
curl -XGET http: //192 .168.10.49:9200 /_snapshot/my_backup/snapshot_20161207/_status
{ "snapshots" :[{ "snapshot" : "snapshot_20161207" , "repository" : "my_backup" , "state" : "SUCCESS" , "shards_stats" :{ "initializing" :0, "started" :0, "finalizing" :0, "done" :1, "failed" :0, "total" :1}, "stats" :{ "number_of_files" :14, "processed_files" :14, "total_size_in_bytes" :143273, "processed_size_in_bytes" :143273, "start_time_in_millis" :1481060674078, "time_in_millis" :50}, "indices" :{ ".kibana" :{ "shards_stats" :{ "initializing" :0, "started" :0, "finalizing" :0, "done" :1, "failed" :0, "total" :1}, "stats" :{ "number_of_files" :14, "processed_files" :14, "total_size_in_bytes" :143273, "processed_size_in_bytes" :143273, "start_time_in_millis" :1481060674078, "time_in_millis" :50}, "shards" :{ "0" :{ "stage" : "DONE" , "stats" :{ "number_of_files" :14, "processed_files" :14, "total_size_in_bytes" :143273, "processed_size_in_bytes" :143273, "start_time_in_millis" :1481060674078, "time_in_millis" :50}}}}}}]}

5、取消备份

1
curl -XDELETE http: //192 .168.10.49:9200 /_snapshot/my_backup/snapshot_20161207

6、恢复备份

1
curl -XPOST http: //192 .168.10.49:9200 /_snapshot/my_backup/snapshot_20160812/_restore

如果你的是集群而且在创建仓库的时候没有配置共享文件夹那会报下面的错误

1
{ "error" : "RepositoryException[[my_backup] failed to create repository]; nested: CreationException[Guice creation errors:\n\n1) Error injecting constructor, org.elasticsearch.repositories.RepositoryException: [my_backup] location [/mnt/bak] doesn't match any of the locations specified by path.repo because this setting is empty\n  at org.elasticsearch.repositories.fs.FsRepository.<init>(Unknown Source)\n  while locating org.elasticsearch.repositories.fs.FsRepository\n  while locating org.elasticsearch.repositories.Repository\n\n1 error]; nested: RepositoryException[[my_backup] location [/mnt/bak] doesn't match any of the locations specified by path.repo because this setting is empty]; " , "status" :500}

解决方法关闭支点服务器elasticsearch服务重新执行即可成功。

如果已经存在.kibana索引可以先关闭掉。

成功恢复数据后只有主节点服务器存在.kibana索引。我们希望所有的节点服务器都存在此索引时执行下面的命令

1
2
3
4
5
6
curl -XPUT  'http://192.168.10.49:9200/.kibanna/_settings'  -d '
{
     "index"  : {
         "number_of_replicas"  : 1
     }
}'

wKiom1hHvBLRdaY3AAAapXtteRI780.png



本文转自 irow10 51CTO博客,原文链接:http://blog.51cto.com/irow10/1880365,如需转载请自行联系原作者

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
28天前
|
消息中间件 存储 运维
更优性能与性价比,从自建 ELK 迁移到 SLS 开始
本文介绍了 SLS 基本能力,并和开源自建 ELK 做了对比,可以看到 SLS 相比开源 ELK 有较大优势。
55330 143
|
监控 网络虚拟化
自建ELK迁移阿里云日志服务
本文介绍如何将自建的ELK系统迁移到阿里云SLS日志服务。
自建ELK迁移阿里云日志服务
|
Web App开发 监控 应用服务中间件
一行命令:从 ELK 迁移日志服务
日志服务相比自建 ELK 在功能、性能、规模和成本等方面有诸多优势。对于已经存储在 Elasticsearch 中的数据,用户只需要一行命令就能方便地将数据迁移至日志服务。
5383 0
|
编解码
【云上ELK系列】Logstash迁移Elasticsearch数据方法解读
用Logstash实现Elasticsearch集群快速迁移,解读Logstash中metadata的功效,避免踩坑
6532 0
|
监控 应用服务中间件 NoSQL
ELK日志分析系统迁移记录
写在开始 阿里云ECS即将到期,由于之前ELK日志分析是在自己的服务器上进行试水,断断续续运行了一年多时间。 今天抽空赶紧把ELK迁移一下,由于Logstash本身就配置于各个系统之中,所以这里只是对Redis、Elasticsearch和Kibana进行了配置,当然还有一些邮件发送的配置。
3737 0
|
监控 索引 知识图谱
ELK菜鸟手记 (二) - 高级配置之多应用索引过滤
我们在实际的场景中,经常是多个网站或者服务端在一台服务器上,但是如果这些应用全部 记录到一台logstash服务器,大家日志都混在一起不好区分。 有人说,我可以在日志中打项目名,但是这样并不方便。 其实,我们可以在索引上做文章。
1508 0
|
3月前
|
存储 监控 数据可视化
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
270 0
|
4月前
|
存储 Prometheus 监控
Prometheus vs. ELK Stack:容器监控与日志管理工具的较量
随着容器化技术的广泛应用,容器监控与日志管理成为了关键任务。本文将对两种常用工具进行比较与选择,分别是Prometheus和ELK Stack。Prometheus是一款开源的监控系统,专注于时序数据的收集和告警。而ELK Stack则是一套完整的日志管理解决方案,由Elasticsearch、Logstash和Kibana三个组件组成。通过比较它们的特点、优势和适用场景,读者可以更好地了解如何选择适合自己需求的工具。
|
4月前
|
Go 数据处理 Docker
elk stack部署自动化日志收集分析平台
elk stack部署自动化日志收集分析平台
86 0
|
5月前
|
存储 监控 数据可视化
小白带你学习linux的ELK日志收集系统
小白带你学习linux的ELK日志收集系统
166 0