ElasticSearch快照備份及恢復


工作步驟:

1:建立備份快照數據掛載點,即共享文件目錄(Shared Filesystem);

2:建立快照倉儲repository;

3:建立snapshot快照備份;

4:恢復snapshot快照數據;


 

 

1:建立數據掛載點

1)ES所有節點安裝sshfs,可通過yum源安裝,依賴epel;

2)安裝sshfs后,規划共享目錄掛載點,並確定目標掛載點,注意這里要為每個節點的共享目錄分配讀寫權限,如不確定,直接chmod 777 -共享目錄路徑;

3)通過如下指令掛載共享目錄至目標主機路徑:

    #sshfs root@10.200.XX.XXX:/data1/esdata /data1/backups -o allow_other

    指令里的【用戶名@IP地址:路徑】為實際掛載節點路徑及用戶,后一個路徑為本地節點掛載路徑;

4)將ES每個節點上的相同路徑均掛載至遠端的同一地址,完畢后確認已將所有節點的備份目錄掛載為同一目標主機的路徑下;

 

 


 

 

2:建立快照倉儲repository

1)通過es的api建立倉儲,注意body內容的單引號別丟了否則會報400 bad request

    #curl -XPUT http://10.200.XXX.XXX:9200/_snapshot/backup_38 -d 

      '{

    "type": "fs",

    "settings":

    {

      "compress": true,

      "location": "/data1/backups"    # 這里的路徑就是第1步里建立的共享目錄掛載路徑 

    }

  }'

執行后返回200則為成功建立;

2)通過API可獲取剛才建立的repository:

  #curl http://10.200.XXX.XXX:9200/_snapshot/backup_38

正確返回repository信息則通過。

 

2016-12-5 補充:在創建倉儲過程中可能會提示如下錯誤說repository不在repos:

需要在elasticsearch集群中每個節點的配置文件(/etc/elasticsearch/elasticsearch.yml)中加入如下配置項:

path.repo: ["/data1/backups"]

其中指定的repo路徑為節點本地掛載點的路徑(指向遠端共享目錄)

    

 


 

 

3:建立snapshot快照備份

 

1)通過ES的API建立snapshot:

#curl -XPUT http://10.200.XXX.XXX:9200/_snapshot/backup_38/snapshot_20160628 -d

'{
  "indices": "ld.*.stats,ld.log-*",

  "ignore_unavailable": true,

  "include_global_state": false

}'

這里的參數分別指定需要快照的index(支持*通配符),遇到不可用的index的策略(ignore),以及選擇不備份公共信息。

2)驗證快照

#curl http://10.200.XXX.XXX:9200/_snapshot/backup_38/snapshot_20160628 | python -mjson.tool

正常情況下將返回剛才建立的快照信息。

 


 

4:恢復snapshot快照數據

 1)拷貝備份文件

文件服務器(及所有ES節點掛載的文件系統指向的地址)掛載目錄下的內容都屬於需要備份的內容,如下圖所示:

 

2)建立共享文件系統

  • 在拷貝了備份快照信息的主機上以相同的方式建立共享系統,步驟與之前相同;

3)建立快照倉儲repository

  • 以同樣的方式建立倉儲repository;

4)數據恢復

以下列的API來恢復數據:

curl -XPOST http://192.168.0.1:9200/snapshot/backup_38/snapshot_20160628/_restore

也可以通過加入如下參數來定制恢復:

{
"indices": "index1",
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1"
}

5)查看數據恢復進度

curl -XGET http://192.168.0.1:9200/snapshot/backup_38/snapshot_20160628/status

 

 

注:

數據恢復后,需要注意數據恢復的目標ES集群的插件情況(如IK分詞插件)需要與原集群保持一致,恢復后通過關閉索引(head插件直接可以關閉)並啟用,即可重新建立恢復后的索引。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM