開啟阿里云Elasticsearch(簡稱ES)的自動備份功能后,系統將按照設定的備份周期和時間自動備份數據,如果遇到數據誤刪除、應用邏輯錯誤等情況時,您可以通過自動備份恢復功能,將特定時間點的備份數據恢復到原ES實例中,保證數據的安全性。本文介紹開啟、關閉自動備份功能和恢復備份數據的方法。
背景信息
ES數據備份與恢復依賴于elasticsearch-repository-oss插件,阿里云ES實例默認已安裝該插件且不可卸載。關于該插件的詳細信息,請參見elasticsearch-repository-oss。
注意事項
集群的第一個快照是集群數據的完整拷貝,后續所有的快照同步的是已存快照和新快照之間的增量,因此首次快照耗時較長(具體時長與數據量相關),后續快照備份會比較快。
快照僅保存索引數據,不保存Elasticsearch實例自身的監控數據(例如以.monitoring和.security_audit為前綴的索引)、元數據、Translog、實例配置數據、Elasticsearch的軟件包、自帶和自定義的插件、Elasticsearch的日志等。
自動備份只保留最近7天的快照數據,快照數據為全量數據。
自動備份數據只能用于恢復到原集群,如果需要跨集群恢復,請參見手動備份與恢復或設置跨集群OSS倉庫。
關閉自動備份會進行一次數據備份,更新自動備份開始時間不會進行數據備份。
開啟自動備份
- 登錄阿里云Elasticsearch控制臺。
- 在左側導航欄,單擊Elasticsearch實例。
- 進入目標實例。
- 在頂部菜單欄處,選擇資源組和地域。
- 在Elasticsearch實例中單擊目標實例ID。
在左側導航欄,單擊數據備份。
在數據備份(免費試用)區域,打開自動備份開關。
單擊自動備份開始時間右側的設置。
重要為保證系統安全性,內核增強版類型實例的自動備份時間由系統默認生成,不支持修改。
在自動備份周期設置面板,選擇備份周期(自動備份觸發的時間)。
備份周期
說明
每30分鐘
每30分鐘進行一次自動備份。
每天
每天都會進行自動備份。可自定義備份時間。
自定義
自定義選擇備份的周期和時間。
重要自動備份時間為當前實例所在地域的時間。
單擊確定。
查看備份快照
開啟自動備份功能后,您可以登錄Kibana控制臺,在對應阿里云Elasticsearch實例的Kibana控制臺上,通過_snapshot API查看自動備份快照的信息:
查看快照倉庫。
GET _snapshot
執行成功后,返回結果示例如下。
{ "aliyun_auto_snapshot" : { "type" : "oss", "settings" : { "compress" : "true", "base_path" : "cf95b9-185320276651****/es-cn-09k2053us0003****", "endpoint" : "http://oss-cn-hangzhou-internal.aliyuncs.com" } } }
參數
說明
aliyun_auto_snapshot
自動快照倉庫在首次快照時生成。阿里云Elasticsearch自動備份快照存儲的倉庫名稱固定為aliyun_auto_snapshot。
說明一個倉庫可以存儲多個快照,每個快照中可以包含所有、部分或單個索引的備份數據。
type
快照的存儲介質。oss表示快照存儲介質為對象存儲服務OSS(Object Storage Service)。
compress
是否打開快照文件的壓縮功能:
true:打開壓縮功能,僅應用于元數據文件(索引映射和設置)。
false(默認值):不打開壓縮功能,數據文件未壓縮。
base_path
快照在OSS中的存儲位置。
endpoint
OSS所處地域的信息。
查看aliyun_auto_snapshot倉庫中,所有快照的信息。
GET _snapshot/aliyun_auto_snapshot/_all
執行成功后,返回結果示例如下。
{ "snapshots": [ { "snapshot": "es-cn-09k2053us0003****_20210117030003", "uuid": "vIdSCkthTeGa0nSj4D****", "version_id": 5050399, "version": "5.5.3", "indices": [ ".kibana" ], "state": "SUCCESS", "start_time": "2018-06-28T01:22:39.609Z", "start_time_in_millis": 1530148959609, "end_time": "2018-06-28T01:22:39.923Z", "end_time_in_millis": 1530148959923, "duration_in_millis": 314, "failures": [], "shards": { "total": 1, "failed": 0, "successful": 1 } }, { "snapshot": "es-cn-09k2053us0003****_20210118030004", "uuid": "XKO_Uwz_Qu6mZrU3Am****", "version_id": 5050399, "version": "5.5.3", "indices": [ ".kibana" ], "state": "SUCCESS", "start_time": "2018-06-28T01:25:00.764Z", "start_time_in_millis": 1530149100764, "end_time": "2018-06-28T01:25:01.482Z", "end_time_in_millis": 1530149101482, "duration_in_millis": 718, "failures": [], "shards": { "total": 1, "failed": 0, "successful": 1 } } ] }
重要自動備份時間為當前地域的時間,而以上返回結果中的時間為UTC時間(世界標準時間),會存在時區差。您可根據時區差進行轉換,例如北京時間的時區差為8個小時,則北京時間=UTC時間+0800。
其中state為快照狀態,阿里云Elasticsearch實例的快照共有以下5種狀態。
快照狀態
說明
IN_PROGRESS
快照正在執行。
SUCCESS
快照執行結束,且所有shard中的數據都存儲成功。
FAILED
快照執行結束,但部分索引中的數據存儲不成功。
PARTIAL
部分數據存儲成功,但至少有1個shard中的數據沒有存儲成功。
INCOMPATIBLE
快照與阿里云Elasticsearch實例的版本不兼容。
自動備份快照還有以下未顯示的默認參數。
參數
說明
max_snapshot_bytes_per_sec
單節點數據備份的最快速度,默認為每秒40mb。
max_restore_bytes_per_sec
單節點數據恢復的最快速度,默認為每秒40mb。
chunk_size
快照時,大文件會被拆分成若干個小文件。該參數用來設置拆分出的文件大小,例如1g、10m、5k。默認為null,表示無限制。
查看aliyun_auto_snapshot倉庫中,指定快照的詳細信息。
GET _snapshot/aliyun_auto_snapshot/<snapshot>/_status
<snapshot>:自動備份快照名稱。可通過查看所有快照命令獲取,例如es-cn-09k2053us0003****_20210118030004。
執行成功后,返回結果示例如下。
{ "snapshots": [ { "snapshot": "es-cn-09k2053us0003****_20210118030004", "repository": "aliyun_auto_snapshot", "uuid": "XKO_Uwz_Qu6mZrU3Am****", "state": "SUCCESS", "shards_stats": { "initializing": 0, "started": 0, "finalizing": 0, "done": 1, "failed": 0, "total": 1 }, "stats": { "number_of_files": 4, "processed_files": 4, "total_size_in_bytes": 3296, "processed_size_in_bytes": 3296, "start_time_in_millis": 1530148959688, "time_in_millis": 77 }, "indices": { ".kibana": { "shards_stats": { "initializing": 0, "started": 0, "finalizing": 0, "done": 1, "failed": 0, "total": 1 }, "stats": { "number_of_files": 4, "processed_files": 4, "total_size_in_bytes": 3296, "processed_size_in_bytes": 3296, "start_time_in_millis": 1530148959688, "time_in_millis": 77 }, "shards": { "0": { "stage": "DONE", "stats": { "number_of_files": 4, "processed_files": 4, "total_size_in_bytes": 3296, "processed_size_in_bytes": 3296, "start_time_in_millis": 1530148959688, "time_in_millis": 77 } } } } } } ] }
從自動備份恢復數據
自動備份完成后,您可以通過_restore API恢復數據到原Elasticsearch實例中。
恢復.
開頭的系統索引可能會導致Kibana訪問失敗,建議不要恢復系統索引。
在Kibana控制臺上,執行如下命令,從快照中恢復索引數據:
恢復aliyun_auto_snapshot倉庫中,指定快照的所有索引(后臺執行)。
POST _snapshot/aliyun_auto_snapshot/<snapshot>/_restore
<snapshot>:自動備份快照的名稱,例如es-cn-abcdefghij****_20180627091600。
恢復aliyun_auto_snapshot倉庫中,指定快照的所有索引,并等待任務處理完成。
_restore API為異步調用,實例在確認可執行恢復操作后會立即返回,該恢復任務會在后臺執行。您可以通過追加wait_for_completion參數,阻塞調用直到恢復完成再返回信息。
POST _snapshot/aliyun_auto_snapshot/<snapshot>/_restore?wait_for_completion=true
<snapshot>:自動備份快照名稱,例如es-cn-abcdefghij****_20180627091600。
恢復aliyun_auto_snapshot倉庫中,指定快照的指定索引,并為恢復的索引重命名(后臺執行)。
POST _snapshot/aliyun_auto_snapshot/<snapshot>/_restore { "indices": "index_1", "rename_pattern": "index_(.+)", "rename_replacement": "restored_index_$1" }
參數
說明
<snapshot>
自動備份快照名稱,例如es-cn-abcdefghij****_20180627091600。
indices
需要恢復的索引名稱。
rename_pattern
可選,正則匹配需要恢復的索引名稱。
rename_replacement
可選,為匹配上的索引按規則重命名。
關閉自動備份
- 登錄阿里云Elasticsearch控制臺。
- 在左側導航欄,單擊Elasticsearch實例。
- 進入目標實例。
- 在頂部菜單欄處,選擇資源組和地域。
- 在Elasticsearch實例中單擊目標實例ID。
在左側導航欄,單擊數據備份。
在數據備份(免費試用)區域,單擊開啟自動備份開關,關閉自動備份功能。