磁盘故障导致索引无法恢复处理流程
ES集群版本:V_5.4.2
translog 损坏
如因磁盘故障,导致索引translog损坏而无法恢复,此时可通过清空索引translog的方式恢复索引,但translog中未刷盘的数据会丢失(索引历史数据不会丢失,一般来说,至多只会丢失当天数据)。
查看未分配分片原因
// 按照state状态正序排序,state一致时按照 prirep 正序排序
// 获取到未分配主分片(p)的 index,shard,prirep 信息
GET _cat/shards?v&s=state,prirep

// 使用explain命令查看未分配的原因
// index 填写未分配主分片的索引名称;shard 填写未分配主分片的分片编号;primary为true表示是主分片,填false表示查看副本未分配的原因
GET /_cluster/allocation/explain
{
"index": "test_index",
"shard": 1,
"primary": true
}
如果返回结果中,有 [failed to recover from translog] 字样,如:

本文介绍了当Elasticsearch(ES)遇到磁盘故障导致索引损坏时,尤其是translog损坏的情况,如何进行处理。包括查看未分配分片原因,通知用户可能的数据丢失,清空translog日志,以及手动分配分片的详细步骤。如果index文件损坏,可能需要强制分配空主分片,导致数据丢失。
最低0.47元/天 解锁文章
1263





