V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SlipStupig
V2EX  ›  程序员

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

  •  
  •   SlipStupig · 2019-07-26 00:12:28 +08:00 · 3709 次点击
    这是一个创建于 1946 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用的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 条附言  ·  2019-07-26 20:08:10 +08:00
    通过手工 reroute 解决了,周一发布一个工具
    6 条回复    2019-07-26 09:55:42 +08:00
    wangking
        1
    wangking  
       2019-07-26 01:37:45 +08:00
    数据不重要就把 index 清除重建把
    SlipStupig
        2
    SlipStupig  
    OP
       2019-07-26 06:57:23 +08:00
    @wangking 数据非常重要啊
    brust
        3
    brust  
       2019-07-26 09:00:12 +08:00
    知识盲区,es 不是自动恢复吗?
    等大佬回答
    horx
        4
    horx  
       2019-07-26 09:26:19 +08:00
    5.x x 是几? 5.5 以下要先升级到 5.6,再升级到 6.x
    linxiaojialin
        5
    linxiaojialin  
       2019-07-26 09:37:29 +08:00
    是不是有些片挂掉了
    alfer
        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、主分片恢复后,分配副本分片
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1803 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:27 · PVG 00:27 · LAX 08:27 · JFK 11:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.