ELK生態:es數據備份與恢復

數據備份


  • 描述:

es引入倉庫與快照的概念實現了數據的備份與恢復,在elasticsearch.yml中指定倉庫的base目錄,創建倉庫,將快照創建在指定的倉房中即可實現索引的備份。

  • 解決的問題:

  1. 備份指定的索引
  2. 備份全部索引
  • 答疑

  1. 快照的過程可以後臺進行
  2. 快照時會將保存該索引的全部數據
  3. 同一倉庫下的同一快照只能執行一次。
  4. 本次快照會基於上次倉庫之前的快照進行增量保存。
  5. 快照保存的內容:①索引數據②集羣全局狀態③。。。留待探索
  6. 同一時刻只允許一個快照執行。
  • 執行步驟

  1. 在elasticsearch.yml 配置文件中配置倉庫base目錄

 

#以windows系統舉例,路徑格式依系統不同自行設置路徑
path.repo: ["D:\\program\\elasticsearch-5.1.1\\data\\back"]
  1. 創建倉庫

 

POST _snapshot/my_backup_1
{
  "type": "fs",
  "settings": {
    "location": "D:\\program\\elasticsearch-5.1.1\\data\\back\\my_backup_1",
    "max_snapshot_bytes_per_sec": "20mb",
    "max_restore_bytes_per_sec": "20mb",
    "compress": true
  }
}

配置解釋:
注意請求方式:POST請求會更新已有的倉庫配置,PUT會重新創建該倉庫。
type:倉庫的類型爲共享文件系統
location: 指定倉庫的路徑,必須爲path.repo 的子目錄
max_snapshot_bytes_per_sec:快照數據進入倉庫時,該參數可以控制過程的限流情況,默認爲每秒20M
max_restore_bytes_per_sec:從倉庫恢復數據時,該參數控制過程限流情況,默認值:每秒20M
注意:如果掛在的路徑爲遠程目錄時,應該合理配置該值,不至於網絡流量被佔滿。
compress: 數據是否壓縮

  1. 快照所有打開的索引

 

#發送完請求會立即響應,快照會在後臺進行
PUT _snapshot/my_backup_1/snapshot_1
# 指定wait_for_completion=true時會一直阻塞直到快照完成。
PUT _snapshot/my_backup_1/snapshot_1?wait_for_completion=true
  1. 快照指定索引

 

PUT _snapshot/my_backup_1/snapshot_3
{
  "indices": "my_index_1,my_index_2",
  "ignore_unavailable": true,
 "include_global_state": true
}

配置解釋:
indices:指定索引備份
ignore_unavailable: 如果indices指定的某些索引不存在時,是否忽略,默認爲true 忽略不存在的索引。
include_global_state:是否阻止集羣全局狀態保存爲快照的一部分。

至此備份操作完成...............................

快照中恢復


  • 從快照中恢復

 

#異步調用
POST _snapshot/my_backup/snapshot_1/_restore
#同步阻塞
POST _snapshot/my_backup/snapshot_1/_restore?wait_for_completion=true

將快照中的索引數據全部恢復
注意:如果已經存在相關索引必須先將索引關閉
POST index_name/_close
再將索引打開
POST index_name/_open

  • 恢復指定索引並重命名索引

 

POST _snapshot/my_backup/snapshot_2/_restore
{
  "indices": "my_index_1,my_index_2",
  "rename_pattern": "my_index_(.+)",
  "rename_replacement": "restored_my_index_$1"
} 

備份相關其餘API


  • 獲取快照的信息

 

#獲取單個快照的信息
GET _snapshot/my_backup/snapshot_1
#獲取倉庫下所有快照的信息
GET _snapshot/my_backup/_all
  • 刪除某個快照

 

DELETE _snapshot/my_backup/snapshot_2
  • 監控快照進度

 

GET _snapshot/my_backup/snapshot_1
GET _snapshot/my_backup/snapshot_1/_status

這兩個API均可以監控某個快照進度
區別:
第2個API提供更加詳細的監控信息
第一個API用的是快照機制相同的線程池,當快照非常大的分片時,狀態更新間隔會很大,因爲API在競爭線程池資源,而第二個API會在單獨的線程池中運行。
綜合考慮監控快照API使用 第二個API
返回結果

 

{
   "snapshots": [
      {
         "snapshot": "snapshot_3",
         "repository": "my_backup",
         "state": "IN_PROGRESS", 
         "shards_stats": {
            "initializing": 0,
            "started": 1, 
            "finalizing": 0,
            "done": 4,
            "failed": 0,
            "total": 5
         },
      ........
  ]
}
 
  • 取消快照

 

#執行簡單的刪除即可,將會停止快照的執行並刪除
DELETE _snapshot/my_backup/snapshot_2



作者:3517a85fd522
鏈接:https://www.jianshu.com/p/f6d10f97a20d
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章