ES跨集群索引遷移(文件拷貝)

1. 說明

以文件拷貝方式跨集群遷移索引润樱,會完整保留源集群上的索引的setting脉幢、mapping齿诉、aliase等所有完整配置,遷移過程中無法進行修改顶猜;

2. 源集群上備份索引

2.1 獲取待遷移索引信息

包括索引setting沧奴、mapping、shard數(shù)量以及每個shard所在的節(jié)點信息驶兜;

獲取索引信息

curl -XGET 'http://XX.XX.XX.XX:9200/_cat/indices/shakespeare?v'

?

health status index ? ? ? uuid ? ? ? ? ? ? ? ? ? pri rep docs.count pri.store.size

green? open ? shakespeare kEr6n5PJQ1COdhgXDpApnA ? 1 ? 1 ? ? 335901 ? ? ?? 202.6mb

獲取索引相關的shard信息

curl -XGET 'http://XX.XX.XX.XX:9200/_cat/shards/shakespeare?v'

?

index ? ? ? shard prirep state ? ? docs ? store ip ? ? ? ? ? node

shakespeare 0 ? ? r ? ?? STARTED 335901 201.8mb 10.31.10.160 node-02

shakespeare 0 ? ? p ? ?? STARTED 335901 202.6mb 10.31.10.160 node-03

? 可以看到待遷移的索引 song_proj_ae_20200304105959的id為kEr6n5PJQ1COdhgXDpApnA扼仲,有1個主分片,在節(jié)點10.31.10.160上抄淑,總文檔數(shù) 335901屠凶,后續(xù)需要用到這些信息;

2.2 停止索引寫入

索引備份之前肆资,需要確保索引已經停止寫入矗愧,最好停止索引寫入的程序運行;

2.3 確保緩存寫入磁盤

索引備份之前郑原,需要確保緩存中的索引數(shù)據(jù)已經保存在磁盤上唉韭,否則會發(fā)生數(shù)據(jù)丟失,使用如下命令犯犁,強制緩存中的所有數(shù)據(jù)寫入磁盤属愤,待命令執(zhí)行成功后繼續(xù)下一步;

curl -XPOST "http://XX.XX.XX.XX:9200/shakespeare/_flush/synced"

2.4 備份索引

根據(jù)第一步上獲取到的索引的每個分片的節(jié)點信息酸役,登陸到對應的節(jié)點上對應的索引目錄下住诸,將索引uuid的目錄,完整進行備份操作涣澡。

/opt/huawei/data2/nodes/0/indices/kEr6n5PJQ1COdhgXDpApnA

?

drwx------ 5 es users 4096 Mar? 4 11:37 0

drwx------ 2 es users 4096 Mar? 4 12:06 _state

?

scp -r kEr6n5PJQ1COdhgXDpApnA XX.XX.XX.XX:/opt/huawei/data_bak/shakespeare/0/

建議:如果源集群和目的集群之間的網絡是互通的贱呐,可以直接兩臺機器之間直接拷貝;

2.5 多分片的備份方式

如果索引中包含多個主分片入桂,并且分片分布在不同的服務器上奄薇,則需要分別備份到備份服務器上,不可以人為進行合并抗愁;

建議:有條件的話馁蒂,可以將多個分片通過reroute的move命令呵晚,移動到同一個節(jié)點上,可以簡化備份和恢復操作远搪;

3. 目的集群上恢復索引

3.1 準備

恢復索引就是從備份服務器上劣纲,將備份的索引恢復到新集群的Datanode節(jié)點上,恢復過程中需要的Datanode節(jié)點的數(shù)量谁鳍,和源集群上索引分布的Datanode節(jié)點數(shù)量相等癞季,即如果索引只有1個分片,或者所有分片都集中在1個Datanode節(jié)點倘潜,則只需要恢復到1個Datanode節(jié)點即可绷柒,如果索引有4個分片,分布到3臺Datanode上涮因,則需要分別恢復到新集群上的3臺Datanode上废睦,依次類推;

3.2 恢復索引文件

下面以恢復一個索引的一個分片為例進行說明:

登陸到新集群的一臺Datanode服務器上养泡,進入ES Data目錄下的indices子目錄下嗜湃,參考 /opt/huawei/data/nodes/0/indices;

從備份服務器上澜掩,將需要恢復索引的對應索引目錄復制到該目錄下购披。

cd /opt/huawei/data/nodes/0/indices/

cp -r /opt/huawei/data_bak/shakespeare/0/kEr6n5PJQ1COdhgXDpApnA/ .


[es@host-10-33-114-216 kEr6n5PJQ1COdhgXDpApnA]$ ll

drwx------ 4 es es 4096 Mar? 5 17:07 0

drwx------ 2 es es 4096 Mar? 5 17:01 _state

可以看到,此處的整個索引目錄肩榕,都是從源索引的備份目錄中獲取來的刚陡;

[es@host-10-33-114-216 kEr6n5PJQ1COdhgXDpApnA]$ cd 0

[es@host-10-33-114-216 0]$ ll

total 8

drwx------ 2 es es 4096 Mar? 5 17:07 index

drwx------ 2 es es 4096 Mar? 5 17:01 _state

drwx------ 2 es es 4096 Mar? 5 17:07 translog

3.3 加載索引

待索引的所有分片,都已經拷貝到對應的Datanode服務器上時株汉,再進行索引加載操作筐乳;

當集群狀態(tài)發(fā)生變化時,ES集群會自動發(fā)現(xiàn)并加載新索引乔妈,可以通過重啟節(jié)點蝙云、創(chuàng)建/刪除索引、調整副本數(shù)等方式觸發(fā)集群狀態(tài)刷新路召,建議可以通過觸發(fā)ES集群自動修復來進行集群狀態(tài)刷新贮懈;

curl -XPOST "http://XX.XX.XX.XX:9200/_cluster/reroute?retry_failed=true"

集群狀態(tài)刷新后,依次檢查索引狀態(tài)和分片狀態(tài)优训,可以看到對應索引的狀態(tài)已經變成GREEN,并且分片的狀態(tài)已經變成 STARTED各聘,恢復正常揣非;

curl -XGET 'http://XX.XX.XX.XX:9200/_cat/indices/shakespeare?v'

health status index ? ? ? uuid ? ? ? ? ? ? ? ? ? pri rep docs.count pri.store.size

green? open ? shakespeare kEr6n5PJQ1COdhgXDpApnA ? 1 ? 1 ? ? 335901 ? ? ?? 202.6mb

?

curl -XGET 'http://XX.XX.XX.XX:9200/_cat/shards/shakespeare?v'

index ? ? ? shard prirep state ? ? docs ? store ip ? ? ? ? ?? node

shakespeare 0 ? ? p ? ?? STARTED 335901 201.8mb 10.33.114.216 node-01

至此,該索引的數(shù)據(jù)已經恢復躲因,如果有多個索引需要恢復早敬,可以重復執(zhí)行以上步驟忌傻;

4. 常見問題

4.1 當索引已經遷移到新集群中后,如果通過手工刪除后搞监,再次采用該方式無法遷移

原因:ES中自動識別索引水孩,是通過索引名稱和uuid來唯一確定的,雖然該索引已經刪除琐驴,但是在ES集群中的信息已經將該索引標記為刪除狀態(tài)俘种,無法再次通過自動識別進行遷移;

解決方法:需要將源索引改名后重新遷移绝淡;

4.2 當索引有多個分片宙刘,只遷移了部分分片進行恢復后,索引狀態(tài)為RED

原因:當只遷移了部分分片就恢復時牢酵,由于ES找不到其他未遷移的分片悬包,導致索引狀態(tài)為RED;

解決方法:將未恢復的分片拷貝到某個datanode節(jié)點上馍乙,再通過 allocate_stale_primary 命令布近,強制恢復;

shard為準備恢復的shard id丝格,node表示在該節(jié)點上已經存在該shard的數(shù)據(jù)撑瞧,index為索引名稱;

curl -XPOST "http://127.0.0.1:9200/_cluster/reroute" -H "Content-Type: application/json" -d '{

?? "commands": [

? ? ?? {

? ? ? ? ?? "allocate_stale_primary": {

? ? ? ? ? ? ?? "index": "shakespeare",

? ? ? ? ? ? ?? "shard": 0,

? ? ? ? ? ? ?? "node": "node-01",

? ? ? ? ? ? ?? "accept_data_loss": true

? ? ? ? ?? }

? ? ?? }

?? ]

}'

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末铁追,一起剝皮案震驚了整個濱河市季蚂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌琅束,老刑警劉巖扭屁,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異涩禀,居然都是意外死亡料滥,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門艾船,熙熙樓的掌柜王于貴愁眉苦臉地迎上來葵腹,“玉大人,你說我怎么就攤上這事屿岂〖纾” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵爷怀,是天一觀的道長阻肩。 經常有香客問我,道長运授,這世上最難降的妖魔是什么烤惊? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任乔煞,我火速辦了婚禮,結果婚禮上柒室,老公的妹妹穿的比我還像新娘渡贾。我一直安慰自己,他們只是感情好雄右,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布空骚。 她就那樣靜靜地躺著,像睡著了一般不脯。 火紅的嫁衣襯著肌膚如雪府怯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天防楷,我揣著相機與錄音牺丙,去河邊找鬼。 笑死复局,一個胖子當著我的面吹牛冲簿,可吹牛的內容都是我干的。 我是一名探鬼主播亿昏,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼峦剔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了角钩?” 一聲冷哼從身側響起吝沫,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎递礼,沒想到半個月后惨险,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡脊髓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年辫愉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片将硝。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡恭朗,死狀恐怖,靈堂內的尸體忽然破棺而出依疼,到底是詐尸還是另有隱情痰腮,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布律罢,位于F島的核電站诽嘉,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜虫腋,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望稀余。 院中可真熱鬧悦冀,春花似錦、人聲如沸睛琳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽师骗。三九已至历等,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辟癌,已是汗流浹背寒屯。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留黍少,地道東北人寡夹。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像厂置,于是被迫代替她去往敵國和親菩掏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內容