開啟阿里雲 Elasticsearch 的自動備份功能後,系統將按照設定的備份周期自動備份索引資料。當遇到資料誤刪除、應用邏輯錯誤等情況時,可以從自動備份中恢複資料。
注意事項
資料備份與恢複依賴 elasticsearch-repository-oss 外掛程式,阿里雲 Elasticsearch 執行個體預設已安裝且不可卸載。詳情請參見 elasticsearch-repository-oss。
快照僅儲存索引資料,不儲存監控資料(
.monitoring、.security_audit首碼索引)、中繼資料、Translog、執行個體配置、軟體包、外掛程式和日誌。自動備份只保留最近 7 天的快照資料,且僅支援恢複到原叢集。如需跨叢集恢複,請參見手動備份與恢複或自動備份快照到本地OSS倉庫。自動備份的索引中繼資料大小不能超過
100MB,超出此限制可能導致自動備份任務無法執行,建議進行手動備份與恢複。首次快照為全量拷貝,耗時較長,建議首次使用手動備份與恢複。
自動備份快照僅保留最近 7 天。超過 7 天后,系統將自動清理到期快照的底層儲存資料,且清理後資料無法恢複。如需長期保留備份資料,請在快照到期前通過手動備份與恢複手動匯出或遷移快照。
開啟自動備份及建立快照倉庫本身不收費。自動備份的快照資料存放區在 OSS 中,會產生 OSS 儲存費用。具體費用資訊,請參見 OSS 計費說明。
首次自動備份或觸發全量備份時,系統需要進行全量資料拷貝,佔用叢集 CPU、IO 等資源,可能影響業務效能。建議將自動備份時間設定在業務低峰期(如淩晨),以減少對線上業務的影響。
開啟自動備份及監控警示
開啟自動備份
在左側導覽列,單擊Elasticsearch執行個體。
在頂部功能表列,選擇資源群組和地區。
在Elasticsearch執行個體列表單擊目標執行個體 ID,進入執行個體詳情頁。
在左側導覽列,單擊資料備份。
在資料備份(免費試用)地區,開啟自動備份開關。
單擊自動備份開始時間右側的設定。
核心增強版類型執行個體的自動備份時間由系統預設產生,不支援修改。
在自動備份周期設定面板,選擇備份周期(自動備份觸發的時間)。
備份周期
說明
每30分鐘
每30分鐘進行一次自動備份。
每天
每天都會進行自動備份。可自訂備份時間。
自訂
自訂選擇備份的周期和時間。
自動備份時間為當前執行個體所在地區的時間。
單擊確定。
開啟監控警示
自動備份開啟後,建議同步配置叢集監控警示,監控快照的備份狀態。若監控頁面中,快照狀態(value)指標狀態為 2,表示快照任務失敗。
通過 /_cat/snapshots/aliyun_auto_snapshot?format=json 命令可查看最近一次快照的狀態詳情,並在需要時進行手動備份。
快照狀態包含:
SUCCESS:所有分區備份成功。
PARTIAL:部分分區備份失敗。
FAILED:備份任務執行失敗。
若無最新快照,表示任務未觸發。叢集異常、節點異常等情況下,系統可能不會進行自動備份。
查看備份快照
開啟自動備份功能後,可以在 Kibana 控制台上通過 _snapshot API 查看自動備份快照資訊。詳情請參見通過Kibana串連叢集。
查看快照倉庫。
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
自動快照倉庫名稱,首次快照時自動產生,固定為 aliyun_auto_snapshot。一個倉庫可以儲存多個快照,每個快照中可以包含所有、部分或單個索引的備份資料。
type
快照儲存介質。oss 表示使用Object Storage Service服務 OSS。
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 時間。北京時間 = UTC 時間 + 8 小時。
state 欄位為快照狀態,共有以下 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 } } } } } } ] }
從自動備份恢複資料
恢複 . 開頭的系統索引可能會導致 Kibana 訪問失敗,建議不要恢複系統索引。在 Kibana 控制台上,執行如下命令從快照中恢複索引資料:
恢複指定快照的所有索引(後台執行)。
POST _snapshot/aliyun_auto_snapshot/<snapshot>/_restore<snapshot>:自動備份快照的名稱,例如 es-cn-abcdefghij****_20180627091600。
恢複指定快照的所有索引,並等待任務處理完成。
_restore API 為非同步呼叫,執行個體在確認可執行恢複操作後會立即返回。追加 wait_for_completion 參數可阻塞直到恢複完成:
POST _snapshot/aliyun_auto_snapshot/<snapshot>/_restore?wait_for_completion=true<snapshot>:自動備份快照名稱,例如 es-cn-abcdefghij****_20180627091600。
恢複指定快照的指定索引,並為恢複的索引重新命名(後台執行)。
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執行個體中單擊目標執行個體 ID。
在左側導覽列,單擊資料備份。
在資料備份(免費試用)地區,單擊開啟自動備份開關,關閉自動備份功能。
常見問題
為什麼自動備份失敗或增量快照耗時過長?
自動備份將快照資料寫入 OSS 時,可能觸發 OSS 的 QPS 限制(報錯資訊包含 QpsLimitExceeded),導致備份任務失敗或增量快照的備份耗時與全量快照相當。該問題在業務高峰期(如每日 0:00~2:00)更容易出現。
解決方案:
調整自動備份時間,避開業務高峰期。推薦設定為淩晨 3:00~4:00。
如備份已失敗,可等待下一個備份周期,系統將自動重試。
該問題通常不影響 Elasticsearch 叢集的正常業務運行。
如何在控制台查看自動備份快照?
對於 Elasticsearch 雲原生 PaaS 執行個體,控制台暫無直接查看自動備份快照的入口。可以通過以下方式查看自動備份快照:
通過 Kibana 查看:登入 Kibana(具體操作請參見通過 Kibana 登入可視化控制台),進入 頁面查看快照列表。
通過 API 查看:在 Kibana 控制台的 Dev Tools 中或通過 API 執行以下命令查看所有自動備份快照:
GET _snapshot/aliyun_auto_snapshot/_all
自動備份任務長時間處於執行中(IN_PROGRESS)或後續備份失效怎麼辦?
Elasticsearch 同一時間、同一倉庫僅允許執行一個快照任務。若前一次快照因叢集瞬時波動在啟動階段“假死”(狀態顯示 IN_PROGRESS,但實際未寫入資料),為避免資料衝突,後續觸發的自動備份會被靜默跳過,導致備份連續失效。
解決方案:
登入 Kibana 控制台(具體操作請參見通過 Kibana 登入可視化控制台),執行以下命令查看卡住的快照名稱:
GET _snapshot/aliyun_auto_snapshot/_all返回結果中 state 為 IN_PROGRESS 且長時間未結束的快照即為卡住的快照。
執行以下命令取消該卡住的快照任務:
POST _snapshot/aliyun_auto_snapshot/<snapshot>/_cancel<snapshot>:需要取消的快照名稱,即上一步中查看到的長時間處於 IN_PROGRESS 狀態的快照。
監控建議:配置自訂監控警示規則,檢測狀態為 IN_PROGRESS 且期間超過 1 小時的異常快照任務,以便及時發現並處理。
執行個體升級或配置變更後自動備份停止且無新快照產生怎麼辦?
通常是由於配置了關聯執行個體自身的跨叢集倉庫,導致快照無法寫入。
解決方案:
刪除錯誤的跨叢集配置以及現有的自動快照倉庫(
aliyun_auto_snapshot)。在控制台關閉並重新開啟自動備份功能。系統將在下一個定時備份時間點自動建立新的快照倉庫並恢複正常備份。