如何備份ElasticSearch索引數據到HDFS上

在ElasticSearch裏面備份策略已經比較成熟了java

目前在ES5.x中備份支持的存儲方式有以下幾種:網絡

fs         //本地掛載的盤
url        //網絡協議存儲支持http,https,ftp
repository-s3   //亞馬遜
repository-hdfs  //HDFS
repository-azure  //微軟
repository-gcs   //google

在這裏咱們主要介紹如何備份索引數據到HDFS上。elasticsearch

首先,咱們先從名詞概念上理解下備份相關術語:google

(1)Repositories (倉庫)url

在一個es集羣內,想要備份數據,首先要建立一個倉庫,用來存儲快照,一個集羣能夠建立多個倉庫。es5

(2)Snapshot (快照)插件

有了倉庫以後,咱們就能夠建立快照了,建立快照時,必需要選擇一個指定的倉庫才能建立。每一個快照裏面能夠包含多個索引,默認的話是備份整個集羣的索引。固然咱們也能夠指定備份咱們認爲重要的索引的數據。rest

(3)Restore (恢復)code

備份完成以後數據也就是快照的還原稱爲恢復索引

ok,理解了上面三個概念以後,下面咱們看下具體怎麼操做,本次主要介紹 主要涉及兩個ES版本:

ElasticSearch2.3.4

ElasticSearch5.6.4

(一)在ElasticSearch2.x中如何備份索引數據

(1)在每臺節點上安裝repository-hdfs插件

bin/plugin install elasticsearch/elasticsearch-repository-hdfs/2.2.0

(2)修改每臺節點上的config/elasticsearch.yml文件,添加下面的屬性

security.manager.enabled: false

(3)重啓整個集羣

(4)構建一個倉庫

PUT /_snapshot/my_backup
{
  "type": "hdfs",
  "settings": {
         "path": "/back/es/",
         "load_defaults": "true",
         "compress": "true",
         "uri": "hdfs://192.168.10.160:8020"
  }
}

查看倉庫信息:

//查看指定的倉庫
GET /_snapshot/my_backup  

//下面當前全部的倉庫信息s
GET /_snapshot
GET /_snapshot/_all

刪除一個倉庫:

DELETE /_snapshot/my_backup

注意刪除以後,只是ES裏面的引用刪除,HDFS上備份的文件是不會刪除的

(5)構建一個快照

PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true
{
  "indices": "index_1,index_2",//注意不設置這個屬性,默認是備份全部
  "ignore_unavailable": true,
  "include_global_state": false
}

查詢快照的幾個方式:

GET /_snapshot/my_backup/snapshot_1 //查詢指定快照
GET /_snapshot/my_backup/snapshot_*,some_other_snapshot //支持通配符查詢
GET /_snapshot/my_backup/_all //查詢全部的快照

刪除一個快照:

DELETE /_snapshot/my_backup/snapshot_1

注意刪除以後,只是ES裏面的引用刪除,HDFS上備份的文件是不會刪除的

(6)恢復快照

POST /_snapshot/my_backup/snapshot_1/_restore
{
  "indices": "index_1,index_2", //指定索引恢復,不指定就是全部
  "ignore_unavailable": true,//忽略恢復時異常索引
  "include_global_state": false,//是否存儲全局轉態信息,fasle表明有一個或幾個失敗,不會致使整個任務失敗
  "rename_pattern": "index_(.+)",//是否須要重命名索引
  "rename_replacement": "restored_index_$1"//替換後的索引名
}

(二)在ElasticSearch5.x中如何備份索引數據

ElasticSearch5.x的備份方法和ElasticSearch2.x大同小異,這裏僅介紹他們不一樣的地方。

首先es5要求必須是JDK8的版本,若是你的系統有多個jdk的版本,並且你不想改變現有的jdk版本,那麼你就要,單獨在下面的兩個腳本中聲明JDK:

vi bin/elasticsearch
vi  bin/elasticsearch-plugin

裏面分別添加下面的jdk指定版本:

export JAVA_HOME=/usr/java/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH

而後在每臺節點上安裝備份的插件:

bin/elasticsearch-plugin install repository-hdfs

完事以後,直接重啓集羣便可,注意ElasticSearch5.x不須要再修改elasticsearch.yml文件。

用法和Elasticsearch2.x是同樣的,這裏再也不重述。

最後再補充一下:

es1.x的備份的索引是能夠直接在es2.x中恢復的

es2.x的備份的索引是能夠直接在es5.x中恢復的

可是,es1.x的的索引數據是不能直接在es5.x中使用的。

兼容的索引只能跨一個主要版本

總結:

本文主要介紹了在Elasticsearch2.x和5.x的版本中,如何給索引數據備份及恢復,並敘述了2.x和5.x版本他們的不一樣之處,數據備份是生產環境很是重要的一個環節,有了備份咱們才能夠更加從容的面對一些突發的線上故障。

相關文章
相關標籤/搜索