數據備份
-
描述:
es引入倉庫與快照的概念實現了數據的備份與恢復,在elasticsearch.yml中指定倉庫的base目錄,創建倉庫,將快照創建在指定的倉房中即可實現索引的備份。
-
解決的問題:
- 備份指定的索引
- 備份全部索引
-
答疑
- 快照的過程可以後臺進行
- 快照時會將保存該索引的全部數據
- 同一倉庫下的同一快照只能執行一次。
- 本次快照會基於上次倉庫之前的快照進行增量保存。
- 快照保存的內容:①索引數據②集羣全局狀態③。。。留待探索
- 同一時刻只允許一個快照執行。
-
執行步驟
- 在elasticsearch.yml 配置文件中配置倉庫base目錄
#以windows系統舉例,路徑格式依系統不同自行設置路徑
path.repo: ["D:\\program\\elasticsearch-5.1.1\\data\\back"]
- 創建倉庫
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: 數據是否壓縮
- 快照所有打開的索引
#發送完請求會立即響應,快照會在後臺進行
PUT _snapshot/my_backup_1/snapshot_1
# 指定wait_for_completion=true時會一直阻塞直到快照完成。
PUT _snapshot/my_backup_1/snapshot_1?wait_for_completion=true
- 快照指定索引
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
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。