利用Knapsack進(jìn)行elasticseach的備份遷移(為生產(chǎn)環(huán)境)

背景: 公司項(xiàng)目生產(chǎn)環(huán)境的ES集群索引的初始分片創(chuàng)建時沒有設(shè)置,默認(rèn)為5個分片,一個副本。生產(chǎn)環(huán)境數(shù)據(jù)量激增,需要橫向擴(kuò)展,分片太少而無法橫向擴(kuò)展(ES的分片為最小邏輯單位,一個分片只能存在于一臺物理機(jī),一臺物理機(jī)可以有多個分片)。由于ES2.2.1版本尚未支持分片的修改,所以需要重新建立索引(加大分片數(shù)),并將原有索引備份過來。

考慮方案:

1. 運(yùn)用官方提供的API snapshot and restore,官方文檔輕描淡寫,但建立snapshot時需要利用分布式存儲。優(yōu)點(diǎn)是官方api比較靠譜。 網(wǎng)上有利用fuse和sshfs 在集群機(jī)器掛載共享目錄的方式,但還是生產(chǎn)環(huán)境太爛,無外網(wǎng),centos yum 用不了,單獨(dú)安裝軟件還需要處理復(fù)雜的包依賴。。。??傊欢褑栴}的情況下決定放棄這個方法。

github上面的開源elasticsearch 插件,Knapsack 。優(yōu)點(diǎn)是簡單已用,不需要分布式存儲,缺點(diǎn)是非官方(經(jīng)過實(shí)驗(yàn)可用)。目前只支持到ES的2.3.4版本。Knapsack的github地址:https://github.com/jprante/elasticsearch-knapsack

下面對索引遷移的過程做了一下整理:

(1) 將原有索引進(jìn)行備份,注意由于需要將數(shù)據(jù)導(dǎo)入新的索引,所以需要導(dǎo)出的時候就將索引改名。

curl?-XPOST?'localhost:9200/vehicle/data/_export?map=\{"vehicle":"vehicle_new"\}'

文件超大的時候, 需要將文件分塊:

curl -XPOST 'localhost:9200/ehlindex/_export?map=\{"ehlindex":"ehlindex_new"\}&archivepath=/data1/elasticsearch/logs/ehlindex.bulk&bytes=10g'

(2) 新建索引

curl -XPOST 'localhost:9200/vehicle_new' ?-d @settings.json

settings.json文件內(nèi)容:

{

"settings": {

"number_of_shards" : 20,//分片

"number_of_replicas" : 1 //副本

}

}

(3) 新建類型,設(shè)置類型mapping

curl -XPOST 'localhost:9200/vehicle_new/_mapping/data' -d ?@mapping.json

(3) 將數(shù)據(jù)導(dǎo)入新索引(注:如果分塊,需要指定導(dǎo)入的文件archivepath)

curl -XPOST 'localhost:9200/vehicle/_import?map=\{"vehicle":"vehicle_new"\}&createIndex=false&archivepath=/data1/elasticsearch/logs/ehlindex.bulk'

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容