某雲elasticsearch節點失效,手動重置primary,遷移分割槽
阿新 • • 發佈:2021-06-22
某雲es節點失效,重置primary,遷移分割槽
接手另一個團隊的elasticsearch服務,服務佈署在某雲上,遷移計劃執行期間,叢集狀態yellow,多sharding UNASSIGNED
夾一個私貨,個人其實是不喜歡雲的,有能力自已維護機房和物理伺服器的,還是用伺服器成本低
叢集版本5.5,使用kibana作監控,未使用cerebro
簡單排查一番後,某雲反應是硬碟失效,確定資料無法完全恢復
10個有效節點,2個節點的資料完全丟失,多index異
elasticsearch 只在資料無損的情況在後臺自動執行遷移複製
可能會導致資料損壞的遷移,需要明確手動來執行
對主節點資料無法完全恢復的場景,es提供兩種操作方式,都需要明確指定 "accept_data_loss":true
https://www.elastic.co/guide/en/elasticsearch/reference/5.5/cluster-reroute.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-reroute.html
-
1 allocate_stale_primary 選擇一個從節點作為主節點(存在有效從節點的情況下),若原主節點恢復,則會以新主(原從)覆蓋舊主的資料
node選擇一個存在從shard的node
post http://3464.xyz.com:9200/_cluster/reroute { "commands" : [ { "allocate_stale_primary" : { "index" : "uc_2020", "shard" : 2, "node" : "3456","accept_data_loss":true } } ] }
- 2 allocate_empty_primary 指定一個空主,若原主節點恢復,則舊主會被完全清除
post http://3464.xyz.com:9200/_cluster/reroute { "commands" : [ { "allocate_empty_primary" : { "index" : "uc_2019", "shard" : 2, "node" : "3456","accept_data_loss":true } } ] }
因為舊主已經不可能恢復了,檢視sharding的狀態,還有從的指定allocate_stale_primary,所有從都失效,或index 的replicas為1的指定allocate_empty_primary
因為兩個節點的丟失,shard分配一團亂,順帶手動執行一些shard的遷移
POST http://3464.xyz.com:9200/_cluster/reroute
{
"commands" : [
{
"move" : {
"index" : "test", "shard" : 0,
"from_node" : "node1", "to_node" : "node2"
}
}
]
}
End