Elasticsearch 重启后 red,集群无法恢复数据

2019-07-26 00:12:28 +08:00
 SlipStupig

使用的ES版本为 6.x 一共有 9 个节点,从 5.x 升级到 6.x,重启后所有 index 都显示unassigned,可用数据 replicas 为 70%, 已经恢复数据 40.5%,通过诊断 API,ES 提示如下错误:

cannot allocate because a previous copy of the primary shard existed but can no longer be found on the nodes in the cluster

请教大家到底怎么才能恢复到健康状态呢?

3734 次点击
所在节点    程序员
6 条回复
wangking
2019-07-26 01:37:45 +08:00
数据不重要就把 index 清除重建把
SlipStupig
2019-07-26 06:57:23 +08:00
@wangking 数据非常重要啊
brust
2019-07-26 09:00:12 +08:00
知识盲区,es 不是自动恢复吗?
等大佬回答
horx
2019-07-26 09:26:19 +08:00
5.x x 是几? 5.5 以下要先升级到 5.6,再升级到 6.x
linxiaojialin
2019-07-26 09:37:29 +08:00
是不是有些片挂掉了
alfer
2019-07-26 09:55:42 +08:00
其实你没有把问题描述清楚。
集群重启前,有没有把副本分片的分配置为失效,只对主分片进行分配,可以避免分片之间的竞争。
"cluster.routing.allocation.enable": "primaries"。并关闭集群 rebanlce。

对于重要数据又没有备份,但是分片没有被分配,处理方式如下:
通过 /_cat/shard/{index}定位到具体是哪些分片处理失败。

再用 /_cluster/allocation/expalin 定位具体分片分配失败的原因。

然后根据失败的原因,做具体处理,一般操作:
1、优先恢复主分片
1.1 选择路由主分片到其他节点(可能会造成分片数据丢失)
1.2 删除重复的已分片主分片
2、主分片恢复后,分配副本分片

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/586268

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX