问题产生:机器断电是很容易产生这个问题的。强行kill掉es进程,也有可能导致这个问题。
解决方法:删除损坏的文件到 es安装的bin目录下
运行elasticsearch-translog工具,使用-d选项指定truncate子命令以及损坏的translog的目录, 注意 -d后边指定的是损坏的translog日志的路径。这个在es报错日志中可以看到,是哪个translog日志损坏的。
bin/elasticsearch-translog truncate -d /var/lib/elasticsearchdata/nodes/0/indices/P45vf_YQRhqjfwLMUvSqDw/0/translog/
Checking existing translog files
删除translog日志文件的损失
有可能会损失小部分数据。如果在做大量的写入,数据先写在了内存中,其次写入了trashlog中,当执行flash的时候,数据落盘。删除trashlog日志。这是正常的执行流程,假如还没有执行flush,发生了断电,trasnlog又损坏了,这部分数据就丢失了。