当前位置: 首页 > 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.jsqmd.com/news/38481/

相关文章:

  • EMS4100N芯祥科技USB3.1高速双向模拟开关芯片资料,可pin对pin替代ASW3410
  • Chromium扩展策略绕过漏洞CVE-2025-12436安全分析
  • 让AI替你写用例!Dify+RAG工作流,一键生成覆盖率达90%的测试方案
  • 2025年脱硫除臭菌实力厂家权威推荐榜单:微生物除臭剂/硝化细菌/氨氮去除菌源头厂家精选
  • 图库函数集
  • 国产水质检测仪厂家推荐:采购COD检测仪/总氮/总磷/余氯检测仪的注意事项
  • V4L2的pad连接
  • 2025年11月全自动红外测油仪采购推荐:国产全自动红外测油仪品牌推荐,哪家好?
  • aws的iam
  • 10分钟搞懂!化学人刚需的6大核心期刊
  • 2025-2026年水质测定仪品牌推荐:总磷/总氮/氨氮/COD测定仪哪个品牌好?
  • 副本分片重建
  • 2025年空化液体电辅供热机组定制厂家权威推荐榜单:电锅炉/工业电锅炉/水分子物化供热机组源头厂家精选
  • 详细介绍:STM32 GPIO-------设置成51单片机模式输出
  • 2025高压加速老化/HAST/PCT/热流仪厂家推荐伟煌试验设备,专业可靠!
  • PK6500无源探头在5G基站射频模块测试中的应用方案
  • 2025开窗器/链条/机芯/配件厂家推荐湖州万荣,专业制造品质保障
  • 画图
  • 2025膜结构车棚/景观/体育看台/污水池加盖厂家推荐潍坊乾多,专业建造,品质保障
  • 2025 年 11 月配电柜/配电箱/开关柜厂家推荐排行榜,智能配电系统,低压配电柜,高压开关柜,户外配电箱公司推荐
  • 2025年11月学习平板推荐!学而思凭 AI功能成家长首选
  • 2025年电镜实验室安装订做厂家权威推荐榜单:电镜实验室设计/电镜安装/电镜实验室建设源头厂家精选
  • 激光二极管增透膜技术:提升光学性能的关键方案
  • 【传奇开心果系列】基于Flet框架实现的桌面代码登录验证和SQLite 数据库结合实现数据持久化和多页面导航自定义组件模板特色和达成原理深度解析
  • 自适应动态规划(Adaptive Dynamic Programming,ADP)算法,采用演员-评论家(评价-执行)网络,看这一文即可【非常详细推导,认真推理,包你看得懂】 - 实践
  • 2025 EVA/EVA发泡胶/板材/卷材/片材厂家推荐深圳市共创辉煌,防火/阻燃/防静电多性能保障
  • 故障发现提速 80%,运维成本降 40%:魔方文娱的可观测升级之路
  • 2025预埋件/幕墙/钢结构预埋件厂家推荐鑫诚源,专业生产各类连接件
  • SVM - Machine Learning - SVM Part 2: The Polynomial Kernel
  • pythonocc可视化