全部產品
Search
文件中心

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

更新時間:Jun 30, 2024

在Elasticsearch叢集中,快照是一種簡單而且能夠滿足自動化的備份方式。7.6及以上版本的叢集支援通過定義快照生命週期SLM(Snapshot Lifecycle Management)實現自動備份快照;7.6以下版本需要通過用戶端定時任務來觸發自動備份快照。本文介紹如何在Elasticsearch上實現定時自動備份快照,並儲存至阿里雲OSS倉庫。

背景資訊

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

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

前提條件

您已完成以下操作:

  • 開通Object Storage Service服務OSS(Object Storage Service),並建立一個Bucket。具體操作,請參見開通OSS服務建立儲存空間

    重要

    請建立標準儲存類型的Bucket(不支援Archive Storage類型),開啟Bucket公用讀取許可權,且Bucket的地區與Elasticsearch執行個體的地區保持一致。

  • 建立倉庫。具體操作,請參見建立倉庫

    重要

    在將快照恢複到目的地組群前,也需要在目的地組群中建立倉庫,並映射到與快照備份相同的OSS地址中。

操作步驟

7.6及以上版本

  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

    定時任務,類似Linux下的crontab命令,取值中的數字分別對應:秒、分鐘、小時、天、月、星期、年(可選)。例如,"0 0 0/12 * * ?" 表示每12小時建立一次快照。

    name

    快照的名稱格式。

    repository

    存放快照的倉庫名稱。擷取方式請參見擷取倉庫資訊

    config

    快照的配置資訊:

    • indices:設定快照包含的資料和索引。*表示包含所有的資料和索引。

    • include_global_state:設定快照是否包含叢集狀態以及feature狀態。true:包含,false:不包含。

    retention

    配置快照的保留規則。以上配置樣本表示將快照保留30天,保留的快照最少為5個,最多為50個。各參數說明如下:

    • expire_after:快照保留時間。

    • min_count:最少保留多少個快照。即使超過保留時間也要滿足最小要求。

    • max_count:最多保留多少個快照。即使未達到保留時間也不能超過最大數。

  2. 執行建立的policy。

    POST _slm/policy/auto-snapshots/_execute

    執行完成後,Elasticsearch會每隔12小時建立一次快照。您也可以立即執行retention保留規則,命令如下:

    POST _slm/_execute_retention

7.6以下版本

  1. 配置用戶端。

    具體操作請參見通過用戶端訪問Elasticsearch

  2. 配置並執行定時任務。

    本文以配置crontab定時任務為例,在用戶端伺服器上,執行以下操作:

    1. 建立curl命令指令檔。

      vi /root/snapshot.sh
    2. 在指令檔中,添加叢集中待備份快照的curl訪問命令,並儲存。

      curl -u elastic:***** -X PUT http://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
    5. 重啟crontab。

      sudo /usr/sbin/cron restart

快照備份成功後,您還可以進行快照刪除、快照恢複、查看快照恢複資訊等操作,詳細資料請參見手動備份與恢複