開啟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表示快照儲存介質為Object Storage Service服務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。
在左側導覽列,單擊資料備份。
在資料備份(免費試用)地區,單擊開啟自動備份開關,關閉自動備份功能。