elasticsearch集群中一次删除kibana索引引发的血案

1.问题发生的过程:
早上的时候有某个索引无法看到报表数据,于是就点该报表多次,估计集群被点挂了,报错:Elasticsearch is still initializing the kibana index

当时有点慌估计是昏了头,直接根据baidu某篇博文的提示进行了操作
curl -XDELETE http://localhost:9200/.kibana

这下悲剧发生了,kibana控制台没有东西了,业务部门无法查询报表。。。

后面在http://stackoverflow.com/上搜索到了老外的解释,会丢失所有的配置、索引、图形和报表:

the curl -XDELETE http://localhost:9200/.kibana command works fine, however you lost all your kibana' settings (indexes, graphs, dashboards)

2.解决思路
之前有5个节点部署在阿里云其中有两个节点因为磁盘空间不足扩容,扩容前做了镜像,抱着试试的态度新买服务器挂接上之前的镜像,
找到之前的操作记录:

发现 .kibana索引的uuid为E9kS4THKREKR36IuPICPIA,大小大约有179k,如下

# curl '10.26.241.237:9200/_cat/indices?v'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .kibana E9kS4THKREKR36IuPICPIA 1 1 41 5 179.3kb 89.6kb
green open voice:user:login VMpfcIiFS9OixB-J7-ZLWw 5 1 695465821 0 323.4gb 162.3gb
green open voice:user:logout W8MAAbp7RO6ZYYx7FcfcVA 5 1 686515590 0 279gb 138.3gb
green open push:task:result qWs38E_eQbCicgB312PE8w 5 1 91340303 0 22.1gb 10.9gb
yellow open push:user:req wqJi6jTFT-a0ZN-57Z63Yw 5 1 8476340396 0 5.4tb 3.4tb
green open voice:mic:used pdZZr8mdSwirBGSAYTvIwg 5 1 8925004 0 3.5gb 1.7gb
green open user:register LZ_DwUpDRAyc0gfsFlCdGA 5 1 64626999 0 22.4gb 11.1gb
green open push:user:app 0ivr0VubTCG5mFM0yoq34w 5 1 138403810 0 305.4gb 152.2gb
green open voice:send:text rrS8Kd4nRlim7wEOMqJ1wA 5 1 27960 0 21.6mb 10.8mb
green open voice:mic:lose iUhw676hTTSsyJnv3K0s6Q 5 1 2847952 0 1.7gb 902mb
green open user:login C-qSmB0ST2CrMkb7snrbKQ 5 1 2623263965 0 606.4gb 304.1gb
green open push:user:task 7XPBJeBWRbas5t1XwiKt2Q 5 1 53518658 0 21gb 10.5gb
green open speech:voice:result 7wISjRCeQZSY4SsCNunh8w 5 1 650234559 0 578gb 289.6gb
green open script:user:info qTZEpjkmRiSyyL1WBpMS5g 5 1 0 0 1.4kb 766b
green open speech:voice:upload VBrFZq8QScOFYN1jsCkN4A 5 1 4469453923 0 1.9tb 973.5gb

发现虽然有kibana的索引但是只有在es的数据目录/data/es/data/nodes/0/indices下查找,发现只有不到30k明显不是我们需要的数据

将这台服务器退掉,重新再次购买了一台服务器,挂载上另外一台之前保存的镜像,发现此时的大小为212k左右,和没有出问题之前差不多大小,估计这个就是我们需要的东西了,有点运气成分在吧,5台服务器每个索引有两份,直接将这个数据拷贝到目标服务器发现不行(直接就被es删除掉了)
于是在网上搜索到了elasticdump工具,可以通过这个工具将索引导出然后倒入到目标服务器

原服务器:10.30.138.62
目标服务器:10.26.241.237

3.安装elasticdump工具

yum install epel-release -y
  
yum install nodejs -y
  
yum install nodejs npm -y
  
npm install elasticdump -y

4.导出具体配置信息

# node_modules/elasticdump/bin/elasticdump --ignore-errors=true  --scrollTime=120m  --bulk=true --input=http://10.30.138.62:9200/.kibana   --output=data.json  --type=data
Fri, 10 Mar 2017 08:17:45 GMT | starting dump
Fri, 10 Mar 2017 08:17:45 GMT | got 40 objects from source elasticsearch (offset: 0)
Fri, 10 Mar 2017 08:17:45 GMT | sent 40 objects to destination file, wrote 40
Fri, 10 Mar 2017 08:17:45 GMT | got 0 objects from source elasticsearch (offset: 40)
Fri, 10 Mar 2017 08:17:45 GMT | Total Writes: 40
Fri, 10 Mar 2017 08:17:45 GMT | dump complete

导出mapping信息
# /root/node_modules/elasticdump/bin/elasticdump --ignore-errors=true  --scrollTime=120m  --bulk=true --input=http://10.30.138.62:9200/.kibana   --output=mapping.json  --type=mapping
Fri, 10 Mar 2017 08:19:11 GMT | starting dump
Fri, 10 Mar 2017 08:19:11 GMT | got 1 objects from source elasticsearch (offset: 0)
Fri, 10 Mar 2017 08:19:11 GMT | sent 1 objects to destination file, wrote 1
Fri, 10 Mar 2017 08:19:11 GMT | got 0 objects from source elasticsearch (offset: 1)
Fri, 10 Mar 2017 08:19:11 GMT | Total Writes: 1
Fri, 10 Mar 2017 08:19:11 GMT | dump complete

5.恢复到目标服务器中

直接在安装了elasticdump工具的服务器上操作,节省在目标服务器上安装工具的时间

导入mapping
# node_modules/elasticdump/bin/elasticdump --input=mapping.json  --output=http://10.26.241.237:9200/.kibana --type=mapping
Fri, 10 Mar 2017 08:23:08 GMT | starting dump
Fri, 10 Mar 2017 08:23:08 GMT | got 1 objects from source file (offset: 0)
Fri, 10 Mar 2017 08:23:08 GMT | sent 1 objects to destination elasticsearch, wrote 7
Fri, 10 Mar 2017 08:23:08 GMT | got 0 objects from source file (offset: 1)
Fri, 10 Mar 2017 08:23:08 GMT | Total Writes: 7
Fri, 10 Mar 2017 08:23:08 GMT | dump complete

导入具体的kibana配置信息

# node_modules/elasticdump/bin/elasticdump --input=data.json  --output=http://10.26.241.237:9200/.kibana --type=data
Fri, 10 Mar 2017 08:23:25 GMT | starting dump
Fri, 10 Mar 2017 08:23:25 GMT | got 40 objects from source file (offset: 0)
Fri, 10 Mar 2017 08:23:25 GMT | sent 40 objects to destination elasticsearch, wrote 40
Fri, 10 Mar 2017 08:23:25 GMT | got 0 objects from source file (offset: 40)
Fri, 10 Mar 2017 08:23:25 GMT | Total Writes: 40
Fri, 10 Mar 2017 08:23:25 GMT | dump complete

总结,通过elasicdump可以方便的备份kibana配置,或是迁移

操作之前一定要测试或者明白操作的结果,不能乱操作,特别是生产环境和自己慌乱的情况下
记录是个好习惯
阿里云的镜像功能不错,可以使用它做镜像策略,例如每天备份一次,数据量大可以2天备份一次,以防万一

elasticsearch5.0.1集群一次误删除kibana索引引发的血案的更多相关文章

  1. elasticsearch5.0.1集群排错的几个思路总结

    1.首先查看集群整体健康状态 # curl -XGET http://10.27.35.94:9200/_cluster/health?pretty { "cluster_name" ...

  2. elasticsearch5.0.1集群索引分片丢失的处理

    elasticdump命令安装 yum install npm npm install elasticdump -g 命令安装完毕,可以测试. 可能会报出nodejs的版本之类的错误,你需要升级一下版 ...

  3. ElasticSearch-5.3.1集群环境搭建,安装ElasticSearch-head插件,安装错误解决

    说起来甚是惭愧,博主在写这篇文章的时候,还没有系统性的学习一下ES,只知道可以拿来做全文检索,功能很牛逼,但是接到了任务不想做也不行, leader让我搭建一下分布式的ES集群环境,用来支持企业信用数 ...

  4. Redis-4.0.11集群配置

    版本:redis-3.0.5 redis-3.2.0  redis-3.2.9  redis-4.0.11 参考:http://redis.io/topics/cluster-tutorial. 集群 ...

  5. Redis-5.0.5集群配置

    版本:redis-5.0.5 参考:http://redis.io/topics/cluster-tutorial. 集群部署交互式命令行工具:https://github.com/eyjian/re ...

  6. Redis 3.0 Cluster集群配置

    Redis 3.0 Cluster集群配置 安装环境依赖 安装gcc:yum install gcc 安装zlib:yum install zib 安装ruby:yum install ruby 安装 ...

  7. 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群(转载-2)

    原文:http://www.cnblogs.com/PurpleDream/p/4510279.html 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群 前言:       ...

  8. 菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章

    菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章 cheungmine, 2014-10-26 在上一章中,我们准备好了计算机和软件.本章开始部署hadoop 高可用集群. 2 部署 ...

  9. 菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章

    菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章 cheungmine, 2014-10-25 0 引言 在生产环境上安装Hadoop高可用集群一直是一个需要极度耐心和体力的细致工作 ...

随机推荐

  1. RocketMQ介绍与云服务器安装

    RocketMQ 介绍与概念 在github上的说法来看: Apache RocketMQ是一个分布式消息传递和流媒体平台,具有低延迟,高性能和可靠性,万亿级容量和灵活的可扩展性.它提供了多种功能: ...

  2. 移动端利用-webkit-box水平垂直居中

    首先,必须要在父元素上用display:-webkit-box. 一.box的属性: 1.box-orient 用于父元素,用来确定父容器里子容器的排列方式,是水平还是垂直. horizontal在水 ...

  3. 【洛谷P1248】加工生产调度

    题目大意:某工厂收到了n个产品的订单,这n个产品分别在A.B两个车间加工,并且必须先在A车间加工后才可以到B车间加工.某个产品i在A.B两车间加工的时间分别为Ai.Bi.怎样安排这n个产品的加工顺序, ...

  4. CodeBlocks: 生成的exe文件自定义一个图标

    CodeBlocks生成的exe文件的图标默认是系统图标,如何自定义一个漂亮的小图标呢? 我是C菜鸟,平时只用CodeBlocks练习c,也不开发什么软件,这个问题就难倒我了. 到网上搜索了一下,发现 ...

  5. 中南大学2018年ACM暑期集训前期训练题集(入门题) Q: Simple Line Editor

    数据有毒,一个一个读字符是错,整个字符串读入,一次就A了. 总之,数据总是没有错的,还是对c++了解地不够深刻,还有,在比赛中,一定要有勇气重构代码 错误代码: #include<iostrea ...

  6. java基础基础总结----- 常用DOS命令(一)

    常用DOS命令 dir(directory):列出当前目录下的文件以及文件夹 mkdir (make directory) : 创建目录 rd (remove directory): 删除目录 cd ...

  7. ElasticSearch文档操作介绍三

    ElasticSearch文档的操作 文档存储位置的计算公式: shard = hash(routing) % number_of_primary_shards 上面公式中,routing 是一个可变 ...

  8. oracle解除锁表【原】

    在日常操作中,经常会有不小心被锁表的情况发生 一般造成原因有: 开发人员不小心执行了 for update 查询语句后,没有解锁 不合理代码中开启事务(begin transaction)后,没有关闭 ...

  9. (五)bootloader 启动 ucore os

    Lab1 : bootloader 启动 ucore os 一.内容提要 x86启动顺序 C函数调用 gcc内联汇编(inline assembly) x86-32下的中断处理 小结 二.x86启动顺 ...

  10. ext中grid根据数据不同显示不同样式

    核心代码: var clsRender = function(value){ if (value == 'male') { return "<span style='color:red ...