Elasticsearch的資料匯入匯出
場景:
將一臺elasticsearch伺服器(A)上的索引匯出,然後在再另一臺elasticsearch伺服器上(B)中匯入;也適用於單機的備份與還原操作。
準備工作:
1、服務兩臺:linux(本人使用centos6.5) -- A和B(資料A->B)
2、操作電腦window一臺 -- W
3、在A、Bl兩臺伺服器上分別安裝好elasticsearch(本人使用的2.3.3)與head外掛;具體如何安裝這裡不過多介紹,百度教程很多。
流程開始:
1、在A伺服器上建立一個數據倉庫:在elasticsearch.yml中新增:path.repo:
["/elasticsearch/back_up"](倉庫路徑自定義)配置;
2、假設我將要建立的倉庫路徑為:/elasticsearch/back_up,然後建立此路徑資料夾,賦予檔案寫入許可權(一定要有);
3、執行下面命令建立一個倉庫:
curl -XPUT 'http://localhost:9200/_snapshot/test(倉庫名稱)' -d '{
"type": "fs", //是使用共享的檔案系統去儲存快照
"settings": {
"location": "/elasticsearch/back_up",
"compress": true
}
}'
建立倉庫成功後(執行建立命令後返回true),執行 curl -XGET 'http://localhost:9200/_snapshot/_all' 檢視所有倉庫資訊;若要檢視指定倉庫執行 curl -XGET 'http://localhost:9200/_snapshot/test' (test為我測試倉庫名稱,可根據自己命名情況)。
4、建立一個快照執行如下命令:
curl -XPUT "localhost:9200/_snapshot/test/snapshot_1" -d '{
"indices": "index_1,index_2", //索引名稱,多個用逗號隔開
"ignore_unavailable": "true", //忽略不存在的索引(不設定會快照請求會失敗)
"include_global_state": false, //防止叢集的全域性狀態被作為快照的一部分儲存起來
"partial": "false" //預設情況下,如果快照紅的1個或多個索引不是全部分片都可用會導致整個請求過程失敗,將其設定為 true 可以改變此行為
還可以使用 curl -XPUT "localhost:9200/_snapshot/test/snapshot_1?wait_for_completion=true" 命令建立es全部索引快照;
執行 curl -XGET "localhost:9200/_snapshot/test/_all" 列出倉庫所有快照資訊;將 _all 換成指定快照名稱列出指定快照資訊
5、到此為止A伺服器上的索引已經備份好(若索引很大需要較長時間耐心等待即可),可進入/elasticsearch/back_up(根據自己定義的倉庫路徑)檢視檔案
如下圖(我建立的是一個名為 sdk_android 的快照,此為我實際專案命名,若為上文快照名此檔名應為 snapshot_1):
6、在B伺服器上也建立一個倉庫步驟回看 1->2->3 ;建立完成後將A伺服器上的快照檔案拷貝到B伺服器的倉庫資料夾下(A->B);此過程若是索引很大需要較長時間(我當時索引檔案15G拷貝了整整1天!伺服器下載上傳速度也比較有限);
7、執行以下命令還原快照:
curl -XPOST "localhost:9200/_snapshot/test/snapshot_1/_restore" -d '{
"indices": "index_1,index_2", //根據自己快照情況指定要還原的索引
"ignore_unavailable": "true",
"include_global_state": false,
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1"
}'
也可通過執行 curl -XPOST "localhost:9200/_snapshot/test/snapshot_1/_restore" 命令全部還原;
8、若索引檔案較大,還原需要一定時間,可執行 curl -XGET "localhost:9200/_snapshot/test/snapshot_1" 檢視還原進度
9、刪除快照執行如下命令:
curl -XDELETE "localhost:9200/_snapshot/test/snapshot_1"
10、若是單機備份還原,可直接執行還原命令。
以上便是我檢視N各文件整理的一個可用的es資料備份與還原的操作,我當時也是被搞的一個頭兩個大,用慣了mysql,以為備份還原直接滑鼠匯出匯入即可。所幸最後還是有找到辦法解決,再次感謝百度給想學習的人一個強大的搜尋機制。最後也希望同為es資料備份還原苦惱的小夥伴們多一份參考!