elasticsearch外场分片找回-UNASSIGNED

0x01 缘由

     产品开发过程中没有专人去深入理解elasticsearch相关原理,导致在产品生产部署时,没有做到合理的物理架构部署,导致后期问题不断出现。
     当外场出现服务器资源瓶颈时,紧急调整相关结构,忙中出错,调整主节点时,导致某个索引无法找回相关分片。类似:
     
     1、3分片 “ UNASSIGNED

0x02 场景描述

     软件:elasticsearch 5.1.1 版本 5个节点 1个主节点 
     运行软件: 上面跑各种程序,导致资源使用需要非常珍惜。
     a.尝试修改elasticsearch/config/elasticsearch.yml 中相关参数,即作为数据节点,又作为主节点如下:
     node.master: true
     node.data: true
     b.重启es
     重启es几分钟后,重新分片还未完成,就开始重启其他节点。
     c.过了几个小时后,发现一个索引分片无法找回,状态变为RED
     后台日志报错:
     017-08-31T15:37:06,018][WARN ][o.e.g.DanglingIndicesState] [node8] [[wide_protocols_215a_201707/j7yRa0RoT6eQPZzl67wv3g]] can not be importe
d as a dangling index, as index with same name already exists in cluster metadata

0x03 问题分析

     数据对于现网运行环境来说,比较重要。所以得想办法去恢复索引分片。
     a.查看索引分片的uuuid:
     
    b.然后进入后台数据存储路径,查看,发现7月份索引两个分片信息,这也是导致es后台日志有如下警告的原因:
     017-08-31T15:37:06,018][WARN ][o.e.g.DanglingIndicesState] [node8] [[wide_protocols_215a_201707/j7yRa0RoT6eQPZzl67wv3g]] can not be importe
d as a dangling index, as index with same name already exists in cluster metadata
   c.导致es状态总是 RED,影响到数据的检索速度等。

0x04 解决思路和办法

   解决问题的过程中尝试了很多做法:
     1、强制重新分片---无用
     2、尝试修改分片文件信息---无用
  最后,可行的方法是:
     1、将所有节点新生成的UUID对象的文件备份移走;
     2、通过head等工具,直接删除该索引;
     3、ES立马把老的索引信息恢复;

0x05 总结

     解决问题是一个逻辑推理的过程,只有根据相关信息和理论去找原因,然后不断在开发环境下尝试,最后总会找到解决问题的方法。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值