elasticsearch出现TranslogCorruptedException导致shard不能启动的问题修复

PYTHON 打印三角形大全 用PYTHON语言打印各种三角形 阅读详情

测试elasticsearch过程中,遇到translog损坏的异常,将修复的过程记录下来。

1. 问题

单机数据量有8亿+,一个index,20+个字段,使用bulk不停的写数据,bulk.size=5W,此时机器意外断电宕机。

机器修复后重启ES,出现translogCorruptedException异常:

[plain]  view plain  copy
  1. [2015-01-06 16:12:34,061][WARN ][indices.cluster          ] [node_141] [ips][4] failed to start shard  
  2. org.elasticsearch.index.gateway.IndexShardGatewayRecoveryException: [ips][4] failed to recover shard  
  3.     at org.elasticsearch.index.gateway.local.LocalIndexShardGateway.recover(LocalIndexShardGateway.java:287)  
  4.     at org.elasticsearch.index.gateway.IndexShardGatewayService$1.run(IndexShardGatewayService.java:132)  
  5.     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)  
  6.     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)  
  7.     at java.lang.Thread.run(Thread.java:745)  
  8. Caused by: org.elasticsearch.index.translog.TranslogCorruptedException: translog corruption while reading from stream  
  9.     at org.elasticsearch.index.translog.ChecksummedTranslogStream.read(ChecksummedTranslogStream.java:70)  
  10.     at org.elasticsearch.index.gateway.local.LocalIndexShardGateway.recover(LocalIndexShardGateway.java:257)  
  11.     ... 4 more  
  12. Caused by: java.io.EOFException  
  13.     at org.elasticsearch.common.io.stream.InputStreamStreamInput.readBytes(InputStreamStreamInput.java:53)  
  14.     at org.elasticsearch.index.translog.BufferedChecksumStreamInput.readBytes(BufferedChecksumStreamInput.java:55)  
  15.     at org.elasticsearch.common.io.stream.StreamInput.readBytesReference(StreamInput.java:86)  
  16.     at org.elasticsearch.common.io.stream.StreamInput.readBytesReference(StreamInput.java:74)  
  17.     at org.elasticsearch.index.translog.Translog$Create.readFrom(Translog.java:353)  
  18.     at org.elasticsearch.index.translog.ChecksummedTranslogStream.read(ChecksummedTranslogStream.java:68)  
  19.     ... 5 more  
  20. [2015-01-06 16:12:34,062][DEBUG][index.service            ] [node_141] [ips] [4] closing... (reason: [recovery failure [IndexShardGatewayRecoveryException[[ips][4] failed to recover shard]; nested: TranslogCorruptedException[translog corruption while reading from stream]; nested: EOFException; ]])  
  21. [2015-01-06 16:12:34,062][DEBUG][index.shard.service      ] [node_141] [ips][4] state: [RECOVERING]->[CLOSED], reason [recovery failure [IndexShardGatewayRecoveryException[[ips][4] failed to recover shard]; nested: TranslogCorruptedException[translog corruption while reading from stream]; nested: EOFException; ]]  

提示有四个shard start failed,bulk写数据到index失败:

[plain]  view plain  copy
  1. Primary shard is not active or isn't assigned is a known node. Timeout: [1m], request: org.elasticsearch.action.bulk.BulkShardRequest@372c22f5]]  

2. 解决方法

找了一些办法修复,包括lucene的CheckIndex修复工具。

CheckIndex的官方解释:Basic tool and API to check the health of an index and write a new segments file that removes reference to problematic segments.

会造成损坏segment中的数据丢失。


想找一个数据丢失最少的解决方法,在google group上找到一个类似的问题:ES failed to recover after crash

Motov给的解决方案:

- shut down elasticsearch cluster 
- find all shards that cannot recover by searching log file
- for each shard move its non-zero length translog file into a temporary directory (see explanation below)
- start elasticsearch cluster
- if you see messages for other shards - repeat

也就是 
关闭集群 --> 找到不能启动的shard --> 清除这些shard的 translog(注意做备份) --> 重启ES集群
如果还不行重复以上过程。

尝试着清除出现问题shard 的 translog,果然ES所有的shard都启动成功。

3. 分析总结

ES 的translog中包含 对ES所有的所有更改,是数据备份和恢复的重要组件。
如果在写translog时发生宕机事故,translog写入流程没有正常的结束,translog文件结尾没有正确的结束符号,
导致eof Exception。


另:Motov的完整回答:

In nel's case it was corrupted transaction log. When you run out of disk space sometimes the last transaction cannot be fully written into transaction log and then it fails on recovery. If you see exactly the same error messages, you can try the following:

- shut down elasticsearch cluster
- find all shards that cannot recover by searching log file
- for each shard move its non-zero length translog file into a temporary directory (see explanation below)
- start elasticsearch cluster
- if you see messages for other shards - repeat

If you see message like this:

[2012-06-22 17:36:17,165][WARN ][indices.cluster          ] [Cat-Man] [ myindex][ 1] failed to start shard

It means that it cannot recover shard  1 of the index  myindex on the node Cat-Man. If you take a look at data/elasticsearch/nodes/0/indices/ myindex/1/translog directory, you will find files like this: translog-123456677899 or translog-123456677899.recovering. One of them will have non-zero length. Move it to a temporary directory and try starting the server. 

The transaction log files that you will be moving out contain your most recently updated and indexed documents. So, these updates will be lost as a result of this operations, but you should be able to recover the rest of your data.
华为云物联网系统开发(纯云端)外包方案及项目需求说明书 提供一个详细的需求文档(SRS,Software Requirements Specification),用于指导完全零基础的非专业负责人外包兼职专业技术人员开发一款基于华为云物联网平台、Astro低代码平台和Astro Canvas大屏设计的物联网系统,纯软件实现并支持下载部署。文档涵盖详细的软硬件组成清单(聚焦软件和云服务)、技术文档要求等,确保非专业人员在移交后能够复用、扩展和操作该系统。本文档简洁、全面,适合非技术背景的管理者使用,并基于华为云生态的内部实施部署。 阅读详情

相关推荐

告别手动复制粘贴!用R语言脚本批量抓取TCMSP中药靶点基因(附完整代码)

本文介绍如何使用R语言脚本自动化抓取TCMSP数据库中的中药靶点基因数据,告别手动复制粘贴的低效操作。通过详细的代码示例和参数设置,帮助研究人员快速获取并过滤符合药代动力学标准的中药成分及其靶点基因,大幅提升研究效率。特别适合生物信息学和中药现代化研究领域的从业者。

weixin_26950847的博客 261

记录一次elasticsearch状态为red的问题修复

使用elasticsearch-head-master查看到集群健康值为****。其中一个index的shard 2 恢复失败,失败原因描述如下。

fly_1c的专栏 699

FreeModbus V1.6主机模式实战:如何在STM32上实现Modbus RTU主从一体通信

本文详细介绍了如何在STM32平台上利用FreeModbus V1.6开源协议栈实现Modbus RTU主从一体通信。文章深入剖析了V1.6版本主机模式的架构设计,提供了从硬件配置、串口与定时器移植到FreeRTOS操作系统适配的完整实战指南,并分享了数据缓冲区管理、多线程协同及高级调试技巧,为构建稳定可靠的工业通信网关提供了系统化解决方案。

weixin_29194255的博客 372

ES节点服务器异常掉电重启导致shard不能启动的问题修复

今天elasticsearch两个节点服务器异常掉电重启,遇到translog损坏的异常,将修复的过程记录下来。 1、问题 单机数据量有2亿+,一个index,20+个字段,使用bulk不停的写数据,bulk.size=5000,此时机器意外断电宕机。 机器修复后重启ES,出现translogCorruptedException异常: [2018-04-18 16:29:25,95...

很多时候,你缺少的不是知识而是热情 3778

第一天(点亮led灯+led灯闪烁)——Arduino uno R3 学习之旅

发光二极管(Light Emitting Diode,简称LED)是一种能够将电能转化为光能的固态的半导体器件。长脚为阳极短脚为阴极电流必须从长脚流入从短脚流出方可点亮LED##杜邦线杜邦线:是导线中的一种,杜邦线端部有两种接头形式:带针的一种称为公头,带孔的一种称为母头,如下图所示:说明:与电源相连接时,一般采用红色杜邦线,与地连接时采用黑色杜邦线。

qwsbcjendb的博客 1127

【电路设计】SERDES与pcie

明确通信接口需要达到什么样的数据速率、信号完整性以及系统中各个部件的互相作用。2.

数字人生 4563

服务器掉电重启后无法修复,ES节点服务器异常掉电重启导致shard不能启动的问题修复...

[2018-04-18 16:29:25,950][WARN][indices.cluster] [elasticsearch_43_ssd] [ocslog-2018.04.18][0] failed to start shardorg.elasticsearch.index.gateway.IndexShardGatewayRecoveryException: [ocslog-2018.04....

weixin_29817863的博客 817

分子动力学仿真软件:LAMMPS_(16).应用案例分析

通过以上四个应用案例,我们详细介绍了如何使用LAMMPS进行不同系统的分子动力学仿真。从简单的液体水仿真到复杂的纳米管仿真,每个案例都包含了详细的步骤说明和代码示例。读者可以通过这些示例实际操作并验证结果,从而更好地理解LAMMPS的功能和使用方法。希望这些案例能够为读者在分子动力学仿真领域的研究和应用提供帮助。

kkchenjj的博客 836

一次系统扩容引起的elasticsearch故障及恢复

1.背景 在公司搭建了elk集群,集群配置如下: 机器名 CPU 内存 硬盘 raid 操作系统 部署软件 m21p22 Intel® Xeon®CPUE5620@2.40GHz X16 148G 2T raid1 centos5.8 redis kibana m21p23 Intel® Xeon®CPUE5-2620v2@2.10GHz X24 160G 7T raid1+0 centos6.8 logstash elasticsearch*2 m21p24 Intel® Xeon

dhaibo1986的专栏 2015

【数字IC验证快速入门】26、SystemVerilog项目实践之AHB-SRAMC(6)(AHB-SRAMC SVTB Overview)

导读:作者有幸在中国电子信息领域的排头兵院校“电子科技大学”攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思、清华紫光、联发科技等业界顶尖集成电路相关企业面授课程,对数字IC验证有了一些知识积累和学习心得。为帮助想入门前端IC验证的朋友,思忱一二后,特开此专栏,以期花最短的时间,走最少的弯路,学最多的IC验证技术知识。 文章目录一、内容概述二、AHB-SRAMC 验证计划 一、内容概述 AHB-SRAMC 验证计划 AHB-SRAMC 验证平台的架构图 AHB-SRAMC 验证平台的代.

悟已往之不谏 知来者之可追 2650

MATLAB基础应用精讲-【数模应用】游程检验(附MATLAB、R语言和python代码实现)

游程检验是一种非参数性统计假设的检验方法,它是游程总数检验和最大游程检验的总称,用于两个独立样本的比较和观测结果随机性的检验测试。​游程检验亦称“连贯检验”,是根据样本标志表现排列所形成的游程的多少进行判断的检验方法。[2]例1:设某样本n=12人的标志表现为男、女,有以下三种排列。(i) 男\男,女\女\女,男,女\女,男\男\男\男;(ii) 男\男\男\男\男\男\男,女\女\女\女\女;(iii) 男,女,男,女,男,女,男,女,男,女,男\男;连续出现男或女的区段称为游程。

qq_36130719的博客 605

ElasticSearch Recovery 分析

上周出现了一次故障,recovery的过程比较慢,然后发现Shard 在做恢复的过程一般都是卡在TRANSLOG阶段,所以好奇这块是怎么完成的,于是有了这篇文章 这是一篇源码分析类的文章,大家需要先建立一个整体的概念,建议参看这篇文章 另外你可能还需要了解下 Recovery 阶段迁移过程: INIT -> INDEX -> VERIF...

allwefantasy的专栏 734

【系统架构设计师】论文模板样例:论软件系统架构风格

本人于年月参与项目,该系统为*,在该项目组中我担任系统架构师岗位,主要负责系统整体架构设计。本文以该车联网项目为例,主要讨论了软件架构风格在该项目中的具体应用。底层架构风格我们采用了虚拟机风格中的解释器,因该公交共有几十种不同的数据协议,使用解释器风格可以满足整车数据协议兼容性需求;中间层关于应用层的数据流转采用了独立构件风格中的隐式调用,以减低系统间耦合度、简化软件架构,提高可修改性方面的架构属性;应用系统层采用了B/S的架构风格,统一解决公交行业性难题“实施推广难、维护难”问题。

数据知道的博客 9925

Elasticsearch数据损坏问题深度分析与解决方案

Elasticsearch采用严格的校验机制确保磁盘数据的完整性。当检测到读取的数据与写入时不一致时,系统会抛出以下典型异常: 1. **索引损坏异常**:`CorruptIndexException` 2. **状态损坏异常**:`CorruptStateException` 3. **事务日志损坏异常**:`TranslogCorruptedException` 这些异常通常源于CRC32...

gitblog_00123的博客 528

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

es translog文件损坏导致集群起不来

es translog文件损坏导致集群起不来 有可能会损失小部分数据。如果在做大量的写入,数据先写在了内存中,其次写入了trashlog中,当执行flash的时候,数据落盘。删除trashlog日志。这是正常的执行流程,假如还没有执行flush,发生了断电,trasnlog又损...

Angus 1411

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Elasticsearch节点磁盘空间耗尽

最近遇到了一个特殊的情况,我们所使用的一个Elasticsearch集群的数据节点磁盘空间耗尽,啥事会发生呢? 当然你的RED。下面是相关的日志信息,其中ES-Data_11是当时的Master节点,ES-Data_12是出现的磁盘耗尽的数据节点,出事儿的index名字为raw_v3.2017_03_22。 [2017-03-22 11:57:30,503][WARN ][index

Jeffrey Zhou 的专栏 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

elasticsearch translog 去除问题

去除elasticsearch translog,提升写入速度。

goodluck_mh的博客 1134

ES 5.6.4源码解析---translog

ES 中translog是存储于磁盘上的文件,每个ES分片都会一个translog,所以translog的存储路径就位于分片数据目录下。如下图所示: 1:索引名称 2:分片名称 3存放translog文件的目录 Translog目录下有2种格式的文件,tlog后缀的文件和ckp后缀的文件。 translog中存储了ES的操作记录,具体的说是ES还没落盘的数据的操作记录。因此不难看出trans...

qqqq0199181的博客 2571

elasticsearch磁盘不足造成index只读

1、logstash报错 [INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"blocked by: [FORBIDDEN/12/index read-only / ...

zhangsq1319 2615

ElasticSearch 升级过程中给涉及到的术语-3 事务日志-Translog

1、事务日志介绍         只有在luncene commit以后,luncene的改变才会被持久化,这是一个相对开销很大的操作,因而不能在每个索引后或者删除操作后执行; 在一次提交之后和另一次提交之前发生的更改将在进程退出或硬件故障的情况下由Lucene从索引中删除。由于luncene commit 开销太大而不能在每次操作后执行,因此每个分片的copy都有一个事物日志,这个事物日志成...

大师兄你家猴跑啦的博客 2154

org.elasticsearch.indices.recovery.RecoveryFailedException: [.kibana][0]: Recovery failed from {9VX8

今天elasticsearch 的虚拟机宕机了,我尝试着修一下,结果各种报错, 一横心 把/home/yitao/elasticsearch/data 中的所有数据删掉 然后把/home/yitao/elasticsearch/logs 中所有的日志文件删掉 保证运行内存是最少3个G 然后再运行,就成功了, 初学者可以借鉴,生产环境就不要这么搞了。自己给自己留的一个记录 ...

滴水穿石 859

Elasticsearch recovery.RecoveryFailedException: [xxx][0]: Recovery failed on {node-1} --- 采坑

问题描述; 服务器断电,es 直接挂掉,再次启动时,因以前数据量过大,大约500g,单机版es 启动恢复数据很是吃力,jvm 回收频繁。 [2019-06-17T16:24:14,303][INFO ][o.e.m.j.JvmGcMonitorService] [node-1] [gc][20] overhead, spent [319ms] collecting in the la...

qq_41497111的博客 3606

Caused by: org.elasticsearch.index.query.QueryShardException

org.elasticsearch.action.search.SearchPhaseExecutionException: all shards failed at org.elasticsearch.action.search.AbstractSearchAsyncAction.onPhaseFailure(AbstractSearchAsyncAction.java:274) ~[elasticsearch-6.4.3.jar!/:6.4.3] at org...

paj123456789的博客 1555

elasticsearch7.5.1集群断电故障解决方案

错误信息如下 { "state": "UNASSIGNED", "primary": true, "node": null, "relocating_node": null, "shard": 3, "index": "device_search_20201204", "recovery_source": { "type": "EXISTING_STORE","bootstrap_new_history_uuid": false}, "unassigned_info": { "reason": "ALLOC

Mr小川的博客 1578

Elasticsearch断电后启动异常(failed recovery, failure RecoveryFailedException)

断电遇到的elasticsearch6.3问题:重启es集群后索引的部分分片无法正常加载(UNASSIGNED状态)。 问题现象: Elasticsearch head页面点击未加载的分片出现如下错误信息: { "index": "objext_result", "primary": true, "recovery_source": { "type": ...

qq_24570443的博客 5083

No shard available for [get [service_name][type][-87]: routing [null]]解决方案

今天skywalking突然不能用了,看日志: 2018-08-09 10:15:29,556 - org.apache.skywalking.apm.collector.cache.caffeine.service.ServiceNameCacheCaffeineService -82494825 [grpc-default-executor-149] ERROR [] - No shard...

山间明月江上清风的专栏 1万+
上一篇: 追踪同步分片副本
下一篇: ES节点服务器异常掉电重启导致shard不能启动的问题修复
笑天居士
博客等级 码龄24年 292粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值