全部產品
Search
文件中心

Elasticsearch:自動備份與恢複

更新時間:Aug 29, 2024

開啟Elasticsearch(簡稱ES)的自動備份功能後,系統將按照設定的備份周期和時間自動備份資料,如果遇到資料誤刪除、應用邏輯錯誤等情況時,您可以通過自動備份恢複功能,將特定時間點的備份資料恢複到原ES執行個體中,保證資料的安全性。本文介紹開啟、關閉自動備份功能和恢複備份資料的方法。

背景資訊

ES資料備份與恢複依賴於elasticsearch-repository-oss外掛程式,阿里雲ES執行個體預設已安裝該外掛程式且不可卸載。關於該外掛程式的詳細資料,請參見elasticsearch-repository-oss

注意事項

  • 叢集的第一個快照是叢集資料的完整拷貝,後續所有的快照同步的是已存快照和新快照之間的增量,因此首次快照耗時較長(具體時間長度與資料量相關),後續快照備份會比較快。

  • 快照僅儲存索引資料,不儲存Elasticsearch執行個體自身的監控資料(例如以.monitoring.security_audit為首碼的索引)、中繼資料、Translog、執行個體配置資料、Elasticsearch的軟體包、內建和自訂的外掛程式、Elasticsearch的日誌等。

  • 自動備份只保留最近7天的快照資料,快照資料為全量資料。

  • 自動備份資料只能用於恢複到原叢集,如果需要跨叢集恢複,請參見手動備份與恢複設定跨叢集OSS倉庫

  • 關閉自動備份會進行一次資料備份,更新自動備份開始時間不會進行資料備份。

開啟自動備份

  1. 登入Elasticsearch控制台
  2. 在左側導覽列,單擊Elasticsearch執行個體
  3. 進入目標執行個體。
    1. 在頂部功能表列處,選擇資源群組和地區。
    2. Elasticsearch執行個體中單擊目標執行個體ID。
  4. 在左側導覽列,單擊資料備份

  5. 資料備份(免費試用)地區,開啟自動備份開關。

  6. 單擊自動備份開始時間右側的設定

  7. 自動備份周期設定面板,選擇備份周期(自動備份觸發的時間)。

    選擇自動備份觸發的時間

    備份周期

    說明

    每30分鐘

    每30分鐘進行一次自動備份。

    每天

    每天都會進行自動備份。可自訂備份時間。

    自訂

    自訂選擇備份的周期和時間。

    重要

    自動備份時間為當前執行個體所在地區的時間。

  8. 單擊確定

查看備份快照

開啟自動備份功能後,您可以登入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

    快照時,大檔案會被拆分成若干個小檔案。該參數用來設定拆分出的檔案大小,例如1g10m5k。預設為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

    可選,為匹配上的索引按規則重新命名。

關閉自動備份

  1. 登入Elasticsearch控制台
  2. 在左側導覽列,單擊Elasticsearch執行個體
  3. 進入目標執行個體。
    1. 在頂部功能表列處,選擇資源群組和地區。
    2. Elasticsearch執行個體中單擊目標執行個體ID。
  4. 在左側導覽列,單擊資料備份

  5. 資料備份(免費試用)地區,單擊開啟自動備份開關,關閉自動備份功能。

相關文檔