天天看点

ES shard Unassigned恢复提示corruption

ES出现Unassigned shard时,通常使用如下命令进行恢复即可,这里假设shard 3丢失。

POST _cluster/reroute
{
    "commands": [
        {
            "allocate_stale_primary": {
                "index": "my-index-name",
                "shard": 3, 
                "node": "my-node-name",
                "accept_data_loss": true
            }
        }
    ]
}
           

但是当恢复不能成功,且提示corruption(损坏),就会很恼火。这是我们只需要进入es数据存储目录将corruption文件删除即可(这可以使index恢复但是可能会丢失数据)。具体做法:

首先确定丢失的分片在哪个节点上,进入该节点的存储目录,我这里是/data/esdb/nodes/0/indices/SR46ul8LT7eXZpIYuyzAdA/index。

查看目录中的文件,把以corrupted_开头的文件(例如corrupted_TkF78pmmSRWY0ccHuwsvvA)删除(或者移动到其它地方备份),然后再执行开头的_cluster/reroute命令就行了。

继续阅读