当前位置: 首页 > news >正文

RED 状态

2. RED 状态还能修复吗?

答案是:大多数情况下可以修复,但取决于根本原因。

  • 可修复的情况:

    • 节点临时下线后重新启动。

    • 磁盘空间清理后。

    • 分片分配被禁用后重新启用。

    • 主分片损坏,但存在一个完好的副本分片(此时该副本分片可以提升为新的主分片)。

  • 难以修复或可能造成数据丢失的情况:

    • 承载主分片的节点永久丢失,并且该分片的所有副本也同时丢失(即该分片的全部数据副本都损毁了)。

    • Lucene 索引文件严重损坏,且没有可用的副本。

重要提示:集群处于 RED 状态意味着你已经部分丢失数据了。虽然集群可能仍在为其他健康的分片提供服务,但红色索引上的读写操作会失败。这是一个需要立即处理的严重故障。


3. 怎么修复?(诊断与修复步骤)

请按照以下逻辑步骤进行排查和修复:

第一步:诊断 - 找出问题根源

  1. 查看集群健康状态:

    bash
    GET _cluster/health

    关注 number_of_nodesactive_primary_shardsactive_shardsunassigned_shards, 以及具体是哪个索引变红了。

  2. 查看未分配的分片:

    bash
    GET _cat/shards?v=true&h=index,shard,prirep,state,node,unassigned.reason&s=state

    这会列出所有分片,并过滤出状态为 UNASSIGNED 的分片。prirep 字段会告诉你它是主分片(p)还是副本分片(r)。重点关注 UNASSIGNED 的主分片。unassigned.reason 字段会给出未分配的原因。

  3. 查看分片分配解释:
    对于特定的未分配分片,可以使用 Allocation Explain API 来获取详细原因。

    bash
    GET _cluster/allocation/explain
    {"index": "your_red_index_name","shard": 0,"primary": true
    }

    这个命令的输出是修复的关键! 它会明确告诉你:

    • 无法分配的原因(如 node_leftdisk_usage_exceededcorrupt_index 等)。

    • 正在尝试将其分配到哪个节点,以及为什么失败。

第二步:修复 - 根据原因采取行动

场景A:节点离线

  • 行动:重启离线的节点。一旦节点重新加入集群,它会自动恢复其持有的分片。

  • 如果节点永久丢失,你需要让集群意识到这一点,以便它将可用的副本分片提升为主分片。这可以通过延迟超时自动完成,或者手动执行:

    bash
    PUT _cluster/settings
    {"persistent": {"cluster.routing.allocation.enable": "all"}
    }

    (确保分片分配没有被禁用)集群在等待一段时间(默认1分钟)后,会开始将未分配的分片重新分配到其他健康节点上。

场景B:磁盘空间不足

  • 行动:

    1. 清理磁盘空间(删除旧日志、备份文件,或扩容磁盘)。

    2. 也可以临时调高磁盘水位线(不推荐长期使用):

      bash
      PUT _cluster/settings
      {"transient": {"cluster.routing.allocation.disk.watermark.low": "90%","cluster.routing.allocation.disk.watermark.high": "95%","cluster.routing.allocation.disk.watermark.flood_stage": "98%"}
      }
    3. 空间释放后,分片会自动重新分配。

场景C:分片数据损坏

这是最棘手的情况。

  1. 首选方案:从副本恢复。如果损坏的是主分片,但存在一个完好的副本,你可以通过重启节点或手动重路由,让集群将完好的副本提升为主分片。

  2. 最终手段:强制分配空分片(会丢失数据!)。如果确认该分片的数据已经无法恢复,且可以接受该分片的数据丢失,可以强制分配一个空分片。此操作不可逆,务必谨慎!

    bash
    POST _cluster/reroute?pretty
    {"commands": [{"allocate_stale_primary": {"index": "your_red_index_name","shard": 0,"node": "target_node_name","accept_data_loss": true}}]
    }

    这个命令会强制在指定节点上分配一个“陈旧”的主分片(可能丢失数据),并开始重建副本。

  3. 如果以上都不行,从快照恢复。如果你有定期的快照(Snapshot)备份,这是最好的选择。删除损坏的索引,然后从最近的快照中恢复它。

场景D:分配被禁用

  • 行动:启用分配。

    bash
    PUT _cluster/settings
    {"persistent": {"cluster.routing.allocation.enable": "all"}
    }

总结与预防

  • 预防胜于治疗:

    • 为生产环境配置至少 3 个主节点节点,并分散在不同可用区。

    • 为每个索引设置足够数量的副本分片(number_of_replicas >= 1),确保主分片和它的副本不在同一个节点上。

    • 设置磁盘使用率监控和警报。

    • 定期执行快照备份,这是数据安全的最后防线。

    • 合理规划分片大小和数量,避免过大或过小。

当出现 RED 状态时,保持冷静,按照 诊断 -> 根据原因修复 的流程操作,优先使用无数据损失的方案,最后才考虑强制分配等有损操作。

http://www.zskr.cn/news/47509.html

相关文章:

  • EMS4100N芯祥科技USB3.1高速双向模拟开关芯片资料,可pin对pin替代ASW3410
  • 2025年网络攻防领域常用工具、软件及其应用场景
  • NSIS启动前检测字体缺失,静默安装字体
  • github action 个人项目实践
  • 2025年1.5吨蒸汽发生器源头厂家权威推荐榜单:优质蒸汽发生器/商用蒸汽发生器/暖特加蒸汽发生器源头厂家精选
  • 10分钟搞懂!化学人刚需的6大核心期刊
  • 2025-2026年水质测定仪品牌推荐:总磷/总氮/氨氮/COD测定仪哪个品牌好?
  • 2025年电镜实验室安装订做厂家权威推荐榜单:电镜实验室设计/电镜安装/电镜实验室建设源头厂家精选
  • 激光二极管增透膜技术:提升光学性能的关键方案
  • 【传奇开心果系列】基于Flet框架实现的桌面代码登录验证和SQLite 数据库结合实现数据持久化和多页面导航自定义组件模板特色和达成原理深度解析
  • 2025预埋件/幕墙/钢结构预埋件厂家推荐鑫诚源,专业生产各类连接件
  • 2025铝排/铝棒/铝板厂家推荐山东宜发,导电合金材质齐全品质保障
  • 一份用pyhon生成word/wps文档的代码
  • 2025年比较好的超强承重天地铰链厂家实力及用户口碑排行榜
  • MX Round 23 解题报告
  • 2025年质量好的载带成型机用户口碑最好的厂家榜
  • 2025年热门的立式明装风机盘管TOP品牌厂家排行榜
  • 2025年11月酶制剂品牌评价榜:五强性能与口碑综合排行
  • 2025年11月白酒曲厂家推荐榜:机械化制曲排行评测
  • 【TIDE DIARY 4.1】Agentic RAG - 详解
  • 2025年11月酵母抽提物品牌口碑榜:五强排名与关键指标对比
  • 2025年评价高的轻奢鞋服亚克力展示架厂家推荐及选购参考榜
  • 详细介绍:Zephyr RTOS在智能家居中的应用:智能插座开发
  • 2025年可靠的全屋定制厂家最新热销排行
  • 2025年质量好的废气处理风机热门厂家推荐榜单
  • 2025年靠谱的抗病毒防火板高评价厂家推荐榜
  • 2025年昆明泌尿生殖专科医院权威深度解析:专业诊疗体系与惠民服务全透视
  • 2025年评价高的PPH储罐优质厂家推荐榜单
  • 【每日一面】装饰器原理
  • 2025年优质的高速单壁波纹管设备实力源头