首页 > 代码库 > es数据恢复杂记

es数据恢复杂记

  kill -9或者断电等原因异常,es在重启后,会通过translog来进行数据恢复。

  默认的恢复速度是较慢的,可以设置indices.recovery.current_streams:10增大恢复的线程数,还可以设置indices.recovery的其他参数加快恢复的速度。

 

     但是某些情况下,如lucene文件格式错误等,重启es后无法通过自身恢复,可以考虑如下的方式。

     1.主分片是正常的,副本分片有错误,且无法通过复制机制恢复。可以考虑删除有问题的分片,集群会通过复制的方式恢复。

     2.主分片和副本分片都有错误,备份数据后,可以使用尝试恢复lucene文件。这种方式会删除有问题的段,当段很大时,会丢失很多的文件。

        java -cp /opt/software/elasticsearch/lib/lucene-core-5.3.1.jar -ea:org.apache.lucene... org.apache.lucene.index.CheckIndex /esdata/estest/0/test/0/index -exorcise

        可以使用上面的命令尝试修复,但是一定要先备份数据。

        java -cp /opt/software/elasticsearch/lib/lucene-core-5.3.1.jar -ea:org.apache.lucene... org.apache.lucene.index.CheckIndex,回车后会提示使用的方法。

        参数/opt/software/elasticsearch/lib/lucene-core-5.3.1.jar是es安装目录lib目录,/esdata/estest/0/test/0/index是有问题的分片所对应的文件目录。

   

         不要删除分片文件夹下的segments_N文件,lucene5.x下该文件不会再重建。删除该文件后使用CheckIndex 也无法恢复。

         

es数据恢复杂记