10.elasticsearch集群red恢复损坏的索引
背景
客户磁盘损坏,修复磁盘后,重启机器,发现elasticsearch启动成功,ES状态正常green,但是历史数据都没有加载进,查看ES存储数据目录,发现数据还在。
解决方案
- 首先,需要确认indices目录下的lucene 索引正常。需要关闭ES(实际操作索引处于close状态也可以)。
如果返回java异常报错,注意文件路径,需要到index分片目录下,例如:
/data/elasticsearch/data/nodes/0/indices/LV3R8lK_RU6RJyQlYIx6Tw/0/index/
如果CheckIndex检测到问题并且其修复建议看起来很明智,使用 -exorcise 命令修复
- 其次,查看索引分片具体的失败原因
使用如下API查看
或者,查看es的日志,也会打印出堆栈信息,分片分配失败原因。
-
如果,报错_state目录下的.st文件损坏 则删除这个问题,然后重新分配
3.1 手动重新分配
3.2 手动分配陈腐的分片
需要从步骤2 查看分片分配失败原因的返回结果中,选取index 、shard、node信息
-
如果报错translog-*.tlog日志文件损坏,那么需要移走这个tlog日志文件,然后重试3.2步骤,手动分配陈腐的分片。
此种情况会丢失损坏的tlog文件中的数据。但相对整个索引丢失,已经是最好的情况了
-
如果在索引的分片数据目录,出现corrupt开头的文件,则需要清理掉这个文件。corrupt开头的文件是记录文件损坏的位置,不移除这个文件,分配stale是无法恢复,移除了这个文件才能恢复。清理完corrupt文件之后,再重试 3.2 手动分配陈腐的分片
-
如果尝试以上种种,都不能恢复分片数据。那么为了保证当前索引的正常业务的读写以及ES正常的状态。只能重建索引。丢失的数据不要了(最糟糕的情况)。
批量修复分片,不要数据了
__EOF__

本文作者:赛博朋克V
本文链接:https://www.cnblogs.com/pengliblogs/p/17947761.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/pengliblogs/p/17947761.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
合集:
elasticsearch
分类:
elasticsearch总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~