V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
SlipStupig
V2EX  ›  程序员

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

  •  
  •   SlipStupig · Jul 26, 2019 · 4328 views
    This topic created in 2468 days ago, the information mentioned may be changed or developed.

    使用的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

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

    Supplement 1  ·  Jul 26, 2019
    通过手工 reroute 解决了,周一发布一个工具
    6 replies    2019-07-26 09:55:42 +08:00
    wangking
        1
    wangking  
       Jul 26, 2019
    数据不重要就把 index 清除重建把
    SlipStupig
        2
    SlipStupig  
    OP
       Jul 26, 2019
    @wangking 数据非常重要啊
    brust
        3
    brust  
       Jul 26, 2019
    知识盲区,es 不是自动恢复吗?
    等大佬回答
    horx
        4
    horx  
       Jul 26, 2019
    5.x x 是几? 5.5 以下要先升级到 5.6,再升级到 6.x
    linxiaojialin
        5
    linxiaojialin  
       Jul 26, 2019
    是不是有些片挂掉了
    alfer
        6
    alfer  
       Jul 26, 2019
    其实你没有把问题描述清楚。
    集群重启前,有没有把副本分片的分配置为失效,只对主分片进行分配,可以避免分片之间的竞争。
    "cluster.routing.allocation.enable": "primaries"。并关闭集群 rebanlce。

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

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

    然后根据失败的原因,做具体处理,一般操作:
    1、优先恢复主分片
    1.1 选择路由主分片到其他节点(可能会造成分片数据丢失)
    1.2 删除重复的已分片主分片
    2、主分片恢复后,分配副本分片
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3310 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 13:27 · PVG 21:27 · LAX 06:27 · JFK 09:27
    ♥ Do have faith in what you're doing.