全部產品
Search
文件中心

Elasticsearch:自動備份快照到本地OSS倉庫

更新時間:Mar 31, 2026

阿里雲 Elasticsearch 支援兩種自動備份快照的方式:7.6 及以上版本通過快照生命週期管理 SLM(Snapshot Lifecycle Management)實現定時快照和自動到期清理;7.6 以下版本通過用戶端 crontab 定時任務觸發快照建立。兩種方式都將快照儲存至 OSS 倉庫。

背景資訊

  • 關於快照生命週期SLM的詳細資料,請參見Snapshot Lifecycle Management

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

7.6及以上版本(推薦)

開始前,需要完成以下準備:

  • 建立一個標準儲存類型的 OSS Bucket(不支援Archive Storage類型),Bucket 地區與 Elasticsearch 執行個體保持一致。具體操作參見建立儲存空間

  • 建立快照倉庫,將 OSS Bucket 關聯到 Elasticsearch 執行個體。具體操作參見建立快照倉庫

在目標執行個體的 Kibana 控制台中,單擊Dev Tools,執行以下操作。

  1. 建立 SLM 策略。

    PUT _slm/policy/auto-snapshots
    {
      "schedule": "0 0 0/12 * * ?",
      "name": "<auto-snap-{now/d}>",
      "repository": "my_auto_backup",
      "config": {
        "indices": "*",
        "include_global_state": true
      },
      "retention": {
        "expire_after": "30d",
        "min_count": 5,
        "max_count": 50
      }
    }

    參數

    說明

    schedule

    Cron 運算式,格式為:秒 分鐘 小時 天 月 星期 年(可選)。"0 0 0/12 * * ?" 表示每 12 小時建立一次快照。詳細資料參見Cron

    name

    快照的名稱格式。支援日期數學運算式,如 <auto-snap-{now/d}> 按日期命名。

    repository

    快照倉庫名稱。擷取方式參見擷取倉庫資訊

    config.indices

    快照包含的索引。* 表示所有索引。

    config.include_global_state

    是否包含叢集狀態和 Feature 狀態。true 包含,false 不包含。

    retention.expire_after

    快照保留時間。樣本中為 30 天。

    retention.min_count

    最少保留快照數。即使超過保留時間,也會保留該數量的快照。

    retention.max_count

    最多保留快照數。即使未達到保留時間,超出該數量的快照也會被刪除。

  2. 執行 SLM 策略,立即建立一次快照。

    POST _slm/policy/auto-snapshots/_execute

    執行完成後,Elasticsearch 會按 schedule 參數的設定自動建立快照。如需立即執行 retention 清理規則,運行以下命令:

    POST _slm/_execute_retention

7.6以下版本

7.6 以下版本不支援 SLM,需要通過用戶端 crontab 定時任務實現自動快照。

開始前,需要完成以下準備:

  • 建立一個標準儲存類型的 OSS Bucket(不支援Archive Storage類型),Bucket 地區與 Elasticsearch 執行個體保持一致。具體操作參見建立儲存空間

  • 建立快照倉庫。具體操作參見建立快照倉庫

  • 配置用戶端,確保能通過公網或內網訪問 Elasticsearch 執行個體。具體操作參見通過應用程式串連叢集

在用戶端伺服器上執行以下操作:

  1. 建立快照備份指令碼。

    vi /root/snapshot.sh
  2. 在指令檔中添加以下內容並儲存。將 elastic:***** 替換為實際的使用者名稱和密碼,將 es-***** 替換為實際的執行個體 ID。

    curl -u elastic:***** -X PUT https://es-*****.public.elasticsearch.aliyuncs.com:9200/_snapshot/my_auto_backup_crontab/snapshot_$(date +%s)
  3. 為指令碼添加可執行許可權。

    chmod +x /root/snapshot.sh
  4. 配置 crontab 定時任務。以下樣本設定每天淩晨 2 點執行備份。

    crontab -e

    添加以下行:

    0 2 * * * /bin/bash /root/snapshot.sh

    儲存後 crontab 會自動載入新配置,無需手動重啟 cron 服務。

快照備份成功後,可以進行快照刪除、快照恢複、查看恢複資訊等操作,詳細資料參見手動備份與恢複。如需將快照恢複到其他叢集,需要在目的地組群中建立倉庫並映射到相同的 OSS 地址。