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

10.elasticsearch集群red恢复损坏的索引的更多相关文章
- [译]使用explain API摆脱ElasticSearch集群RED苦恼(转)
"哔...哔...哗",PagerDuty的报警通知又来了. 可能是因为你又遭遇了节点宕机, 或者服务器机架不可用, 或者整个ElasticSearch集群重启了. 不管哪种情况, ...
- 谁再问elasticsearch集群Red怎么办?把这篇笔记给他
前言 可能你经历过这些Red. ...等等 那ES的Red是神么意思? 这里说的red,是指es集群的状态,一共有三种,green.red.yellow.具体含义: 冷静分析 从上图可知,集群red是 ...
- Elasticsearch集群中处理大型日志流的几个常用概念
之前对于CDN的日志处理模型是从logstash agent==>>redis==>>logstash index==>>elasticsearch==>&g ...
- Elasticsearch 集群和索引健康状态及常见错误说明
之前在IDC机房线上环境部署了一套ELK日志集中分析系统, 这里简单总结下ELK中Elasticsearch健康状态相关问题, Elasticsearch的索引状态和集群状态传达着不同的意思. 一. ...
- 搭建Elasticsearch集群常见问题
一.ES安装方法: Linux用户登录(bae),我们用的是5.3版本的包.从官网下载: curl -L -O https://artifacts.elastic.co/downloads/elast ...
- Elasticsearch学习总结 (Centos7下Elasticsearch集群部署记录)
一. ElasticSearch简单介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticse ...
- Elasticsearch集群 管理
第7章 深入Elasticsearch集群 启动一个Elasticsearch节点时,该节点会开始寻找具有相同集群名字并且可见的主节点.如 果找到主节点,该节点加入一个已经组成了的集群:如果没有找到, ...
- Elasticsearch集群知识笔记
Elasticsearch集群知识笔记 Elasticsearch内部提供了一个rest接口用于查看集群内部的健康状况: curl -XGET http://localhost:9200/_clust ...
- 腾讯云Elasticsearch集群规划及性能优化实践
一.引言 随着腾讯云 Elasticsearch 云产品功能越来越丰富,ES 用户越来越多,云上的集群规模也越来越大.我们在日常运维工作中也经常会遇到一些由于前期集群规划不到位,导致后期业务增长集群 ...
- Elasticsearch集群升级指引
目录 背景 第一部分 版本升级指引 第二部分 升级方法和具体步骤 总结 参考文献及资料 背景 Elasticsearch集群的版本升级是一项重要的集群维护工作.本篇文章参考官方文档,将详细介绍相关细节 ...
随机推荐
- MPI转以太网Plus模块Modbus连接两台变频器通信案例
MPI转以太网Plus模块Modbus主站连接两台变频器通信案例 MPI转以太网Plus模块连接200PLC无需编程实现Modbus主从站功能与2台变频器modbus通信:以下就是MPI转以太网模块作 ...
- 爬虫系列——selenium
文章目录 一 介绍 二 安装 三 基本使用 四 选择器 五 等待元素被加载 六 元素交互操作 七 其他 八 项目练习 一 介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决r ...
- VideoCapture
from xgoedu import XGOEDU import time #实例化edu XGO_edu = XGOEDU() XGO_edu.lcd_text(50,50,'hello',colo ...
- ChatGPT API FAQ
ChatGPT API FAQ General questions about the ChatGPT API Written by Johanna C.. Updated over a week a ...
- Jmeter调用Python脚本,实现参数互相传递
首先传值到python 1:新增取样器--->os进程取样器 2:新建.bat文件 (写python脚本的路径和传参的个数:思路是:jmeter调用shell,用shell执行py) F:cd ...
- chatgpt镜像站汇总 - 聚合GPT【即时更新】
自荐下由我开发的聚合GPT网站,这边的GPT镜像站均为免费.无登录.无次数限制的!会及时剔除失效.添加可用地址[欢迎STAR.PR] 地址:https://ele-cat.gitee.io/comp- ...
- Ubuntu上解决快捷键与idea快捷键冲突
Ubuntu上解决快捷键与idea快捷键冲突 一.ubuntu 本身系统导致,需要修改 ubuntu 快捷键 解决方案: 设置 按钮→系统设置→硬件选项区域中的"键盘"→切换到&q ...
- 长程 Transformer 模型
Tay 等人的 Efficient Transformers taxonomy from Efficient Transformers: a Survey 论文 本文由 Teven Le Scao.P ...
- Golang 面向对象深入理解
1 封装 Java 中封装是基于类(Class),Golang 中封装是基于结构体(struct) Golang 的开发中经常直接将成员变量设置为大写使用,当然这样使用并不符合面向对象封装的思想. G ...
- 对 List 列表中的数据按指定字段进行排序
/** * 对列表中的数据按指定字段进行排序.要求类必须有相关的方法返回字符串.整型.日期等值以进行比较. * * @param list 集合 * @param sortName 需要排序的字段,目 ...