日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

ElasticSearch集群災(zāi)難:別放棄,也許能再搶救一下

來源: 責(zé)編: 時間:2024-04-07 17:02:07 143觀看
導(dǎo)讀1 前言Elasticsearch作為一個分布式搜索引擎,自身是高可用的;但也架不住一些特殊情況的發(fā)生,如:集群超過半數(shù)的master節(jié)點丟失,ES的節(jié)點無法形成一個集群,進而導(dǎo)致集群不可用;索引shard的文件損壞,分片無法被正常恢復(fù),進而導(dǎo)致
1 前言

XH128資訊網(wǎng)——每日最新資訊28at.com

Elasticsearch作為一個分布式搜索引擎,自身是高可用的;但也架不住一些特殊情況的發(fā)生,如:XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

集群超過半數(shù)的master節(jié)點丟失,ES的節(jié)點無法形成一個集群,進而導(dǎo)致集群不可用;XH128資訊網(wǎng)——每日最新資訊28at.com

索引shard的文件損壞,分片無法被正常恢復(fù),進而導(dǎo)致索引無法正常提供服務(wù)XH128資訊網(wǎng)——每日最新資訊28at.com

本地盤節(jié)點,多數(shù)據(jù)節(jié)點故障,舊節(jié)點無法再次加入集群,數(shù)據(jù)丟失XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

針對上述的情況,今天來聊一聊相關(guān)的解決方案。XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

2 基礎(chǔ)知識

XH128資訊網(wǎng)——每日最新資訊28at.com

2.1 集群經(jīng)典架構(gòu)

XH128資訊網(wǎng)——每日最新資訊28at.com

在聊解決方案之前,首先來看一看ES集群層面的基本知識,es的集群組成通常如圖1-1所示XH128資訊網(wǎng)——每日最新資訊28at.com

圖 1-1 es常用集群架構(gòu)圖 1-1 es常用集群架構(gòu)XH128資訊網(wǎng)——每日最新資訊28at.com

如圖1-1所示,為生產(chǎn)環(huán)境es集群的經(jīng)典架構(gòu),主要由專有主節(jié)點、專有協(xié)調(diào)節(jié)點和數(shù)據(jù)節(jié)點組成:XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

  • 專有主節(jié)點(Master-eligible node): 具有master角色的節(jié)點,這使其有資格被選為主節(jié)點,只存儲集群元信息包含cluster、index、shard級別的元數(shù)據(jù);該種角色節(jié)點被選舉為master之后,將作為整個ES集群的大腦,負責(zé)維護集群層面的元信息,創(chuàng)建刪除索引等工作。該種節(jié)點的個數(shù)必須為奇數(shù),通常我們固定為3個,如果該類節(jié)點丟失半數(shù),es集群將無法維持es節(jié)點形成一個集群。
  • 專有協(xié)調(diào)節(jié)點(網(wǎng)關(guān)節(jié)點): 該種節(jié)點不具有任何角色,僅僅用來處理es請求;比如(1)將寫請求的數(shù)據(jù)歸類轉(zhuǎn)發(fā)到數(shù)據(jù)所屬的節(jié)點(2)查詢請求的二次聚合計算。通常我們也會給該類節(jié)點保留ingest角色 ,ingest的主要作用是對數(shù)據(jù)進行預(yù)處理;比如:字段重命名、給數(shù)據(jù)文檔打上指紋和清洗數(shù)據(jù)等功能主要通過pipeline能力進行處理
  • 數(shù)據(jù)節(jié)點(Data node): 存儲數(shù)據(jù)和集群元信息,執(zhí)行與數(shù)據(jù)相關(guān)的操作,如CRUD、搜索和聚合。在數(shù)據(jù)節(jié)點上打上不同的屬性,可以使其成為hot、warm、cold數(shù)據(jù)節(jié)點,在es7.9版本之后配置略有不同,但是原理基本不變。

XH128資訊網(wǎng)——每日最新資訊28at.com

如果沒有顯示設(shè)置節(jié)點角色,es的每個節(jié)點都會含有以上三種角色。除此之后還有Remote-eligible node 、ml-node和Transform nodes等角色需要顯示的配置,節(jié)點才會有該角色。XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

2.2 集群元信息

XH128資訊網(wǎng)——每日最新資訊28at.com

集群完全啟動主要包含選舉主節(jié)點、元信息、主分片、數(shù)據(jù)恢復(fù)等重要階段;如圖2-1所示[1]。XH128資訊網(wǎng)——每日最新資訊28at.com

圖 2-1 es集群啟動流程圖 2-1 es集群啟動流程XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

主節(jié)點選舉的過程,不是本文的重點,而是集群元信息的選舉。被選舉出的master和集群元信息新舊程度沒有關(guān)系;master節(jié)點被選舉出來之后,它所要完成的第一個任務(wù),即是選舉集群元信息。XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

(1)Master選舉成功之后,判斷其持有的集群狀態(tài)中是否存在STATE_NOT_RECOVERED_BLOCK,如果不存在,則說明元數(shù)據(jù)已經(jīng)恢復(fù),跳過gateway恢復(fù)過程,否則等待。org.elasticsearch.gateway.GatewayService#clusterChangedXH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

//跳過元數(shù)據(jù)恢復(fù)if (state.blocks().hasGlobalBlock(STATE_NOT_RECOVERED_BLOCK) == false) {            // already recovered            return; } //此處省略部分代碼。 //進入gateway恢復(fù)過程   performStateRecovery(enforceRecoverAfterTime, reason);

XH128資訊網(wǎng)——每日最新資訊28at.com

(2)Master從各個節(jié)點主動獲取元數(shù)據(jù)信息。org.elasticsearch.gateway.Gateway#performStateRecoveryXH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

# 獲取元信息核心代碼 final String[] nodesIds = clusterService.state().nodes().getMasterNodes().keys().toArray(String.class);        logger.trace("performing state recovery from {}", Arrays.toString(nodesIds));        final TransportNodesListGatewayMetaState.NodesGatewayMetaState nodesState = listGatewayMetaState.list(nodesIds, null).actionGet();

XH128資訊網(wǎng)——每日最新資訊28at.com

(3)從獲取的元數(shù)據(jù)信息中選擇版本號最大的作為最新元數(shù)據(jù);元信息包括集群級、索引級。XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

## org.elasticsearch.gateway.Gateway#performStateRecovery    public void performStateRecovery(final GatewayStateRecoveredListener listener) throws GatewayException {# 省略若干行代碼## 進入allocation階段;## final Gateway.GatewayStateRecoveredListener recoveryListener = new GatewayRecoveryListener();## listener為 GatewayStateRecoveredListener    listener.onSuccess(builder.build());    }

XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

(4)兩者確定之后,調(diào)用allocation模塊的reroute,對未分配 的分片執(zhí)行分配,主分片分配過程中會異步獲取各個shard級別元數(shù)據(jù)。XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

#主要實現(xiàn)方法為如下方法   #org.elasticsearch.gateway.GatewayService.GatewayRecoveryListener#onSuccess## 主要工作是構(gòu)建集群狀態(tài)(ClusterState),其中的內(nèi)容路由表 依賴allocation模塊協(xié)助完成,調(diào)用 allocationService.reroute 進 入下一階段:異步執(zhí)行分片層元數(shù)據(jù)的恢復(fù),以及分片分配。updateTask線程結(jié)束.

XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

ES中存儲的數(shù)據(jù):(1)state元數(shù)據(jù)信息;(2)index Lucene生成的索引文件;(3)translog事務(wù)日志。元數(shù)據(jù)信息:XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

  • nodes/0/_state/*.st,集群層面元信息MetaData(clusterUUID 、 settings 、templates等);
  • nodes/0/indices/{index_uuid}/_state/*.st,索引層面元信息IndexMetaData( numberOfShards 、mappings等);
  • nodes/0/indices/{index_uuid}/0/_state/*.st,分片層面元信息ShardStateMetaData(version 、indexUUID、primary等)。

XH128資訊網(wǎng)——每日最新資訊28at.com

上述信息被持久化到磁盤:持久化的state不包括某個分片存在于哪個節(jié)點這種內(nèi)容路由信息,集群完全重啟時,依靠gateway的recovery過程重建RoutingTable和RoutingNode。當讀取某個文檔時, 根據(jù)路由算法確定目的分片后,再從RoutingTable中查找分片位于哪個節(jié)點,然后將請求轉(zhuǎn)發(fā)到目的節(jié)點[1]。XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

?? 注意:在es7.0.0之后es的元信息存儲方式發(fā)生變化;es7.0.0之后元信息存儲改使用lucene的方式存儲,見pr50928 Move metadata storage to Lucene)XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

7.10.2 專有主節(jié)點,集群元數(shù)據(jù)XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

./|-- _state|   |-- _39h.cfe|   |-- _39h.cfs|   |-- _39h.si|   |-- node-0.st|   |-- segments_50d|   `-- write.lock`-- node.lock

XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

6.8.13 專有主節(jié)點,集群元數(shù)據(jù)XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

./|-- _state|   |-- global-230.st|   `-- node-2.st|-- indices|   |-- -hiy4JnoRfqUJHTJoNUt4Q|   |   `-- _state|   |       `-- state-4.st|   `-- ylJKVlqISGOi8EkpxHE_2A|       `-- _state|           `-- state-6.st`-- node.lock

XH128資訊網(wǎng)——每日最新資訊28at.com

3 災(zāi)難場景與處理方法

XH128資訊網(wǎng)——每日最新資訊28at.com

3.1 master節(jié)點丟失

XH128資訊網(wǎng)——每日最新資訊28at.com

?? 注意本文所述的master節(jié)點個數(shù),假設(shè)前提均為3個XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

場景1 master節(jié)點丟失過半

XH128資訊網(wǎng)——每日最新資訊28at.com

master節(jié)點是控制整個集群;當該種節(jié)點角色丟失過半,由于集群中投票節(jié)點永遠不可能達到quorum無法選主,將無法維持es節(jié)點形成一個集群;雖然集群無法形成一個集群,但所仍幸master-eligible節(jié)點存活,我們可以使用如下手段進行處理。XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

es7.0.0版本之前

XH128資訊網(wǎng)——每日最新資訊28at.com

  • 修改剩余節(jié)點的elasticsearch.yaml配置如下,修改quorum的個數(shù),然后啟動剩余的節(jié)點,形成一個新的集群;

XH128資訊網(wǎng)——每日最新資訊28at.com

discovery.zen.minimum_master_nodes: 1discovery.zen.ping.unicast.hosts:- masters-0

XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

  • 重建補充之前丟失的master-eligible節(jié)點,加入集群之后.3 將集群配置修改為舊的配置,再逐一重啟下集群中的節(jié)點,先從master-eligible開始.

XH128資訊網(wǎng)——每日最新資訊28at.com

es7.0.0(包含)版本之后.

XH128資訊網(wǎng)——每日最新資訊28at.com

在es7.0.0版本之后,由于es修改集群的啟動配置,新增配置discovery.seed_hosts 和cluster.initial_master_nodes;es集群第一次啟動時稱為bootstrap,該過程將配置文件中的cluster.initial_master_node作為初始的投票節(jié)點Voting configurations,投票節(jié)點具有選舉master和commit cluster state的權(quán)利,超過半數(shù)以上同意即投票成功。如果在集群健康的場景下,我們需要下線超過半數(shù)的master-eligible;則必須首先使用投票配置排除API從投票配置中排除受影響的節(jié)點。XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

POST _cluster/voting_config_exclusions?node_names={node_names}POST _cluster/voting_config_exclusions?node_ids={node_ids}DELETE _cluster/voting_config_exclusions

XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

但是如果丟失的master節(jié)點超過半數(shù),則可以使用新的集群處理工具elasticsearch-node unsafe-bootstrap pr37696 和elasticsearch-node detach-cluster pr37979XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

面對丟失半數(shù)master-eligible,es7.0.0(包含)版本之后的處理步驟如下:1 使用bin/elasticsearch-node unsafe-bootstrap命令讓唯一主節(jié)點以不安全的方式改寫投票節(jié)點,就像重新進行bootstrap一樣,自己使用持久化的cluster state形成一個新集群2 其他數(shù)據(jù)節(jié)點無法加入新集群因為UUID不同(es使用UUID作為節(jié)點和集群的唯一表示,每個節(jié)點都會持久化當前集群的UUID),使用bin/elasticsearch-node detach-cluster命令讓節(jié)點離開之前的集群3 啟動數(shù)據(jù)節(jié)點和新的master-eligible節(jié)點(如下補充兩個新的master-eligible),他會加入新集群中XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

cluster.initial_master_nodes:- {master-0}- {new-master-1}- {new-master-2}discovery.seed_hosts:- {master-ip-0}- {new-master-ip-1}- {new-master-ip-2}

XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

場景2 master節(jié)點全部丟失

XH128資訊網(wǎng)——每日最新資訊28at.com

es7.0.0版本之前

XH128資訊網(wǎng)——每日最新資訊28at.com

1 關(guān)閉 security 功能(如果開啟了, 最好先關(guān)閉security插件功能):XH128資訊網(wǎng)——每日最新資訊28at.com

1.1 因為新啟動的master節(jié)點, 沒有數(shù)據(jù)節(jié)點(如果只配置了一個master的角色), security插件的初始化無法完成, 各類接口不好調(diào)用XH128資訊網(wǎng)——每日最新資訊28at.com

1.2 如果給新啟動的master節(jié)點, 配置了master and data角色, 則security插件會初始化成功. 會插入index, 但是這個index會和原來的data節(jié)點上保存的沖突. 不知道怎么解.elastic官方xpack-security;關(guān)閉鑒權(quán):xpack.security.enabled:false2 啟動足夠的新master-eligible節(jié)點形成一個新集群.XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

discovery.zen.minimum_master_nodes: 2discovery.zen.ping.unicast.hosts:- {new-masters-1}- {new-masters-2}- {new-masters-3}

XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

3 修改數(shù)據(jù)節(jié)點的為新master的地址,并且刪除掉節(jié)點上的_state(因為新集群的cluster UUID不一致),同上XH128資訊網(wǎng)——每日最新資訊28at.com

4 啟動數(shù)據(jù)節(jié)點,數(shù)據(jù)被恢復(fù)加入到集群XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

es7.0.0(包含)版本之后

XH128資訊網(wǎng)——每日最新資訊28at.com

已經(jīng)沒有cluster state了,唯一的希望是數(shù)據(jù)節(jié)點上的index數(shù)據(jù);恢復(fù)方式借助elasticsearch-node 工具XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

1 關(guān)閉security功能(如果開啟了, 最好先關(guān)閉security插件功能),原因同上XH128資訊網(wǎng)——每日最新資訊28at.com

2 啟動足夠的新master-eligible節(jié)點形成一個新集群XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

cluster.initial_master_nodes:- {new-master-0}- {new-master-1}- {new-master-2}discovery.seed_hosts:- {new-master-ip-0}- {new-master-ip-1}- {new-master-ip-2}

XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

3 bin/elasticsearch-node detach-cluster命令讓數(shù)據(jù)節(jié)點離開之前的集群XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

./bin/elasticsearch-node detach-cluster------------------------------------------------------------------------    WARNING: Elasticsearch MUST be stopped before running this tool.------------------------------------------------------------------------You should only run this tool if you have permanently lost all of themaster-eligible nodes in this cluster and you cannot restore the clusterfrom a snapshot, or you have already unsafely bootstrapped a new clusterby running `elasticsearch-node unsafe-bootstrap` on a master-eligiblenode that belonged to the same cluster as this node. This tool can causearbitrary data loss and its use should be your last resort.Do you want to proceed?Confirm [y/N] yNode was successfully detached from the cluster

XH128資訊網(wǎng)——每日最新資訊28at.com

4 查詢dangling索引,GET /_dangling, 改api 引入es7.9版本于 pr581765 啟動數(shù)據(jù)節(jié)點并使用Import dangling indexAPI將index數(shù)據(jù)import到cluster state中(官方推薦,es7.9版本之后). 或者 配置gateway.auto_import_dangling_indices: true引入于es7.6版本pr49174(es7.6.0-7.9.0可用該配置,在7.6版本之前不需要配置默認加載dangling索引)并啟動數(shù)據(jù)節(jié)點XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

POST /_dangling/{index-uuid}?accept_data_loss=true

XH128資訊網(wǎng)——每日最新資訊28at.com

6 導(dǎo)入完成之后,索引recovery之后即可進行讀寫XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

注意XH128資訊網(wǎng)——每日最新資訊28at.com

Q1: 為什么7.6.0之后需要配置,才能處理懸空索引(dangling index)才能讓數(shù)據(jù)加入新集群,7.6.0之后沒有懸空索引嗎?A1: 其實也是有的,只不過在es2版本將配置移除(對應(yīng)pr10016),默認自動加載dangling index(es2.0-es7.6); 具體實現(xiàn)于org.elasticsearch.gateway.DanglingIndicesState#processDanglingIndices es7.6再次引入dangling配置,es7.9引入dangling index rest apiXH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

Q2: 什么是 dangling 索引?A2: 當一個節(jié)點加入集群時,如果發(fā)現(xiàn)存儲在其本地數(shù)據(jù)目錄中的任何分片(shard)不存在于集群中,將認為這些分片屬于“懸空”索引。懸空索引產(chǎn)生的場景(1)在 Elasticsearch 節(jié)點離線時刪除了多個cluster.indices.tombstones.size 索引,節(jié)點再次加入集群集群 (2)master節(jié)點丟失,數(shù)據(jù)節(jié)點重新加入新的集群等XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

3.2 數(shù)據(jù)節(jié)點故障

XH128資訊網(wǎng)——每日最新資訊28at.com

數(shù)據(jù)節(jié)點災(zāi)難故障之后,無法恢復(fù)加入集群;可將數(shù)據(jù)物理復(fù)制到新的節(jié)點,然后按照master節(jié)點丟失的方式,將數(shù)據(jù)節(jié)點加入集群即可。XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

3.3 分片不能夠自動分配

XH128資訊網(wǎng)——每日最新資訊28at.com

查看索引分片為什么無法分配,POST_cluster/allocation/explainXH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

3.3.1 分片正常

XH128資訊網(wǎng)——每日最新資訊28at.com

如果分片數(shù)據(jù)正常,那么我們可以嘗試重試分配分片任務(wù);POST _cluster/reroute?retry_failedXH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

獲取索引的shard在那些節(jié)點上,使用_shard_stores apiXH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

GET indexName1/_shard_stores

XH128資訊網(wǎng)——每日最新資訊28at.com

使用cluster reroute重新分配XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

# 嘗試分配副本 POST /_cluster/reroute{  "commands": [    {      "allocate_replica": {        "index": "{indexName1}",        "shard": {shardId},        "node": "{nodes-9}"      }    }  ]}

XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

如果是主分片無法分配,可以嘗試如下命令進行分配XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

POST /_cluster/reroute{  "commands": [    {      "allocate_stale_primary": {        "index": "{indexName1}",        "shard": {shardId},        "node": {nodes-9},        "accept_data_loss": true      }    }  ]}

XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

如果主分片確實是無法分配,只能選擇丟失該分片的數(shù)據(jù),分配一個空的主分片XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

POST /_cluster/reroute{  "commands": [    {      "allocate_empty_primary": {        "index": "{indexName1}",        "shard": {shardId},        "node": "{nodes-9}",        "accept_data_loss": true      }    }  ]}

es5.0版本之前參考;https://www.elastic.co/guide/en/elasticsearch/reference/2.4/cluster-reroute.htmlXH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

3.3.2 分片數(shù)據(jù)損壞

XH128資訊網(wǎng)——每日最新資訊28at.com

shard corrupted

XH128資訊網(wǎng)——每日最新資訊28at.com

錯誤參考Corrupted elastic indexXH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

shard-tool es6.5版本引入,該操作需要stop節(jié)點elasticsearch-shard 工具es6.5版本引入 pr33848elasticsearch-shard remove-corrupted-data 的 es7.0.0引入 pr32281XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

bin/elasticsearch-shard remove-corrupted-data --index {indexName} --shard-id {shardId}## 示列:修復(fù)索引twitter的0號分片bin/elasticsearch-shard remove-corrupted-data --index twitter --shard-id 0## 如果--index和--shard-id換成索引分片目錄參數(shù)--dir,則直接修復(fù)data和translogbin/elasticsearch-shard remove-corrupted-data --dir /var/lib/elasticsearchdata/nodes/0/indices/P45vf_YQRhqjfwLMUvSqDw/0

XH128資訊網(wǎng)——每日最新資訊28at.com

修復(fù)完成之后,啟動節(jié)點,如果分片不能夠自動分配,使用reroute命令進行shard分片XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

POST /_cluster/reroute{  "commands":[    {      "allocate_stale_primary":{        "index":"index42",        "shard":0,        "node":"node-1",        "accept_data_loss":false      }    }  ]}

XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

5版本之前可以通過索引級別配置,進行修復(fù)index.shard.check_on_startup: fix ,該配置在es6.5版本移除 pr32279XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

translog 損壞

XH128資訊網(wǎng)——每日最新資訊28at.com

修復(fù)translog操作,需要stop節(jié)點。XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

修復(fù)工具 elasticsearch-translog es5.0.0 引入pr19342elasticsearch-shard remove-corrupted-data translog的 es7.4.1開始引入,pr47866elasticsearch-shard 可以直接清除translog,也可以像上文中指定--dir那樣進行修復(fù)translogXH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

bin/elasticsearch-shard remove-corrupted-data --index  --shard-id   --truncate-clean-translog## 示列:修復(fù)索引twitter的0號分片bin/elasticsearch-shard remove-corrupted-data --index twitter --shard-id 0 --truncate-clean-translog

XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

清除完成之后使用cluster reroute 進行恢復(fù)XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

5版本之前可以通過索引級別配置,進行修復(fù)index.shard.check_on_startup: fix ,該配置在es6.5版本移除 pr32279XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

segments_N文件丟失

XH128資訊網(wǎng)——每日最新資訊28at.com

該種場景的文件損壞是最難修復(fù)的;官方還未提供工具,我們正在自己調(diào)研中XH128資訊網(wǎng)——每日最新資訊28at.com

XH128資訊網(wǎng)——每日最新資訊28at.com

4 參考

XH128資訊網(wǎng)——每日最新資訊28at.com

[1] elasticsearch集群啟動流程XH128資訊網(wǎng)——每日最新資訊28at.com

[2]https://www.elastic.co/guide/en/elasticsearch/reference/7.9/dangling-indices-list.htmlXH128資訊網(wǎng)——每日最新資訊28at.com

[3]https://www.elastic.co/guide/en/elasticsearch/reference/7.10/node-tool.htmlXH128資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-81719-0.htmlElasticSearch集群災(zāi)難:別放棄,也許能再搶救一下

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 探索Python-Patterns模塊:從設(shè)計模式到實際應(yīng)用,助力編程效率提升!

下一篇: 深入解析并行編程利器:.NET中的 Parallel 類

標簽:
  • 熱門焦點
  • 影音體驗是真的強 簡單聊聊iQOO Pad

    大公司的好處就是產(chǎn)品線豐富,非常細分化的東西也能給你做出來,例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發(fā)布會上看到了iQOO的首款平板產(chǎn)品iQOO Pad。雖
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經(jīng)形成了自己頗有競爭力的產(chǎn)品體系,在中端和次旗艦市場上甚至要比小米新機的表現(xiàn)來得更好,正所謂“大丈夫生居
  • 小米降噪藍牙耳機Necklace分享:聽一首歌 讀懂一個故事

    在今天下午的小米Civi 2新品發(fā)布會上,小米還帶來了一款新的降噪藍牙耳機Necklace,我們也在發(fā)布結(jié)束的第一時間給大家?guī)磉@款耳機的簡單分享。現(xiàn)在大家能見到最多的藍牙耳機
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數(shù)據(jù)來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內(nèi)市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • 三言兩語說透設(shè)計模式的藝術(shù)-單例模式

    寫在前面單例模式是一種常用的軟件設(shè)計模式,它所創(chuàng)建的對象只有一個實例,且該實例易于被外界訪問。單例對象由于只有一個實例,所以它可以方便地被系統(tǒng)中的其他對象共享,從而減少
  • 一條抖音4億人圍觀 ! 這家MCN比無憂傳媒還野

    作者:Hiu 來源:互聯(lián)網(wǎng)品牌官01 擦邊少女空降熱搜,幕后推手曝光被網(wǎng)友譽為“純欲天花板”的女網(wǎng)紅井川里予,近期因為一組哥特風(fēng)照片登上熱搜,引發(fā)了一場互聯(lián)網(wǎng)世界關(guān)于
  • 三星電子Q2營收60萬億韓元 存儲業(yè)務(wù)營收同比仍下滑超過50%

    7月27日消息,據(jù)外媒報道,從三星電子所發(fā)布的財報來看,他們主要利潤來源的存儲芯片業(yè)務(wù)在今年二季度仍不樂觀,營收同比仍在大幅下滑,所在的設(shè)備解決方案
  • iQOO Neo8 Pro真機諜照曝光:天璣9200+和V1+旗艦雙芯加持

    去年10月,iQOO推出了iQOO Neo7系列機型,不僅搭載了天璣9000+,而且是同價位唯一一款天璣9000+直屏旗艦,一經(jīng)上市便受到了用戶的廣泛關(guān)注。在時隔半年后,
  • 利用職權(quán)私自解除被封帳號 Meta開除20多名員工

    11月18日消息,據(jù)外媒援引知情人士表示,過去一年時間內(nèi),F(xiàn)acebook母公司Meta解雇或處罰了20多名員工以及合同工,指控這些人通過內(nèi)部系統(tǒng)以不當方式重置用戶帳號,其
Top 主站蜘蛛池模板: 麻城市| 安阳市| 柳林县| 克什克腾旗| 余江县| 图木舒克市| 兴宁市| 南皮县| 大英县| 阿图什市| 抚顺县| 大石桥市| 靖边县| 葵青区| 滁州市| 休宁县| 广州市| 章丘市| 怀安县| 陆河县| 军事| 宝山区| 天峨县| 普陀区| 宣汉县| 曲周县| 鹤岗市| 巴东县| 新宾| 依安县| 交城县| 砀山县| 镇江市| 芜湖县| 富顺县| 奎屯市| 牡丹江市| 蕲春县| 河东区| 天津市| 丁青县|