在Elasticsearch叢集中,快照是一種簡單而且能夠滿足自動化的備份方式。7.6及以上版本的叢集支援通過定義快照生命週期SLM(Snapshot Lifecycle Management)實現自動備份快照;7.6以下版本需要通過用戶端定時任務來觸發自動備份快照。本文介紹如何在Elasticsearch上實現定時自動備份快照,並儲存至阿里雲OSS倉庫。
背景資訊
關於快照生命週期SLM的詳細資料,請參見Snapshot Lifecycle Management。
Elasticsearch資料備份與恢複依賴於elasticsearch-repository-oss外掛程式,Elasticsearch執行個體預設已安裝該外掛程式且不可卸載。關於該外掛程式的詳細資料,請參見elasticsearch-repository-oss。
前提條件
操作步驟
7.6及以上版本
建立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:最多保留多少個快照。即使未達到保留時間也不能超過最大數。
執行建立的policy。
POST _slm/policy/auto-snapshots/_execute
執行完成後,Elasticsearch會每隔12小時建立一次快照。您也可以立即執行retention保留規則,命令如下:
POST _slm/_execute_retention
7.6以下版本
配置用戶端。
具體操作請參見通過用戶端訪問Elasticsearch。
配置並執行定時任務。
本文以配置crontab定時任務為例,在用戶端伺服器上,執行以下操作:
建立curl命令指令檔。
vi /root/snapshot.sh
在指令檔中,添加叢集中待備份快照的curl訪問命令,並儲存。
curl -u elastic:***** -X PUT http://es-*****.public.elasticsearch.aliyuncs.com:9200/_snapshot/my_auto_backup_crontab/snapshot_$(date +%s)
為指令檔添加可執行檔許可權。
chmod +x /root/snapshot.sh
配置crontab資訊,設定指令碼定時執行時間(樣本中設定每天淩晨2點執行)。
crontab -e 0 2 * * * /bin/bash /root/snapshot.sh
重啟crontab。
sudo /usr/sbin/cron restart
快照備份成功後,您還可以進行快照刪除、快照恢複、查看快照恢複資訊等操作,詳細資料請參見手動備份與恢複。