
使用的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
1 wangking 2019-07-26 01:37:45 +08:00 数据不重要就把 index 清除重建把 |
2 SlipStupig OP @wangking 数据非常重要啊 |
3 brust 2019-07-26 09:00:12 +08:00 知识盲区,es 不是自动恢复吗? 等大佬回答 |
4 horx 2019-07-26 09:26:19 +08:00 5.x x 是几? 5.5 以下要先升级到 5.6,再升级到 6.x |
5 linxiaojialin 2019-07-26 09:37:29 +08:00 是不是有些片挂掉了 |
6 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、主分片恢复后,分配副本分片 |