天天看點

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指令就行了。

繼續閱讀