1. 错误起因
服务器集群,某个节点因为没关注硬盘空间问题,导致满了后不能写出数据,重新配置disk的标准后重启,发生某几个shards一直不能恢复。
2. 错误日志
[[flow_text_2018-08-01][4]] marking and sending shard failed due to [failed recovery]
org.elasticsearch.index.gateway.IndexShardGatewayRecoveryException: [flow_text_2018-08-01][4] failed to recover shard
3. 排错过程
原以为是因为没有重启对,包括es文件夹下生成了.href的文件。
把该文件删除,设置了ulimit=65535,把所有节点重启,发现仍然是几个shards不能恢复。来回刷新,日志一直写入这种错误。
4. 解决方案
针对每个不能恢复的shard,使用es的命令找到unassigned shard,以报错的flow_text-2018-08-01的shard4为例,找到以下的文件夹:
elasticsearch1.5.2/data/[elasticsearch_clustername]/nodes/0/indices/flow_text-2018-08-01/4/translog/
删除文件 .recovery
rm .recovery
5. 结束
对每个日志里报错的shard如是处理即可。