Alibaba Cloud Elasticsearchでは、スナップショットを使用してElasticsearchクラスターのデータバックアップを自動化できます。 V7.6以降のElasticsearchクラスターでは、スナップショットライフサイクル管理(SLM)ポリシーを設定して、クラスターのスナップショットの自動作成を有効にできます。 V7.6より前のバージョンのElasticsearchクラスターでは、クラスターへのアクセスに使用するクライアントでスケジュールタスクを作成して、クラスターのスナップショットの自動作成を有効にする必要があります。 このトピックでは、Alibaba Cloud Elasticsearchクラスターのスナップショットの自動作成を有効化し、スナップショットをAlibaba Cloudオブジェクトストレージサービス(OSS)リポジトリに保存する方法について説明します。
背景情報
SLMの詳細については、「Snapshot Lifecycle Management」をご参照ください。
Alibaba Cloud Elasticsearchクラスターのデータのバックアップと復元は、elasticsearch-repository-ossプラグインに依存しています。 このプラグインは、Alibaba Cloud Elasticsearchクラスターにデフォルトでインストールされており、削除することはできません。 このプラグインの詳細については、「elasticsearch-repository-oss」をご参照ください。
前提条件
OSSがアクティブ化され、OSSバケットが作成されていること。 詳細については、「OSSのアクティブ化」および「バケットの作成」をご参照ください。
重要OSSバケットのストレージクラスはStandard、バケットのアクセス制御リスト(ACL)はパブリック読み取りである必要があります。 Elasticsearchは、アーカイブストレージクラスのOSSバケットをサポートしていません。 また、OSSバケットはElasticsearchクラスターと同じリージョンに存在する必要があります。
作成された自動スナップショットを保存するために使用されるリポジトリが作成されていること。 詳細については、「リポジトリの作成」をご参照ください。
重要スナップショットからクラスターにデータを復元する前に、クラスターにリポジトリを作成し、リポジトリをスナップショットと同じOSSエンドポイントにマッピングする必要があります。
手順
V7.6以降のElasticsearchクラスター
Elasticsearchクラスターの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オペレーティングシステムで使用されるcron式に似ています。 このパラメーターの値の各部分は、秒、分、時、日、月、週、年に対応します。 年はオプションです。 たとえば、値
"0 0 0/12 * * ?"は、自動スナップショットが12時間間隔で作成されることを示します。name
自動スナップショットの命名形式。
repository
自動スナップショットの保存に使用されるリポジトリの名前。 リポジトリの名前を取得する方法については、「リポジトリ情報のクエリ」をご参照ください。
config
自動スナップショットの構成情報。
indices: 自動スナップショットが作成されるデータとインデックス。 アスタリスク(
*)は、Elasticsearchクラスターのすべてのデータとインデックスに対して自動スナップショットが作成されることを示します。include_global_state: Elasticsearchクラスターと機能のステータス情報の自動スナップショットを作成するかどうかを指定します。 有効な値:trueとfalse。 値trueは、情報に対して自動スナップショットが作成されることを示します。 値falseは、情報に対して自動スナップショットが作成されないことを示します。
retention
自動スナップショットの保持ポリシー。 前述のコードの構成は、5~50個の自動スナップショットを保持でき、保持期間は30日であることを示しています。 以下のパラメーターが設定されています。
expire_after: 自動スナップショットの保持期間を指定します。
min_count: 保持できる自動スナップショットの最小数を指定します。 min_countパラメーターは、expire_afterパラメーターよりも優先順位が高くなります。
max_count: 保持できる自動スナップショットの最大数を指定します。 max_countパラメーターは、expire_afterパラメーターよりも優先順位が高くなります。
次のコマンドを実行して、SLMポリシーを実行します。
POST _slm/policy/auto-snapshots/_executeコマンドが正常に実行されると、Alibaba Cloud Elasticsearchは12時間間隔で自動的にスナップショットを作成します。 また、次のコマンドを実行して、設定した保持ポリシーをすぐに実行することもできます。
POST _slm/_execute_retention
V7.6より前のバージョンのElasticsearchクラスター
Elasticsearchクラスターへのアクセスに使用するクライアントを設定します。
詳細については、「クライアントを使用してAlibaba Cloud Elasticsearchクラスターにアクセスする」をご参照ください。
Elasticsearchクラスターのスケジュールタスクを作成して実行します。
この例では、crontabスケジュールタスクが作成され、クライアントで次の操作が実行されます。
スクリプトを作成します。
vi /root/snapshot.shElasticsearchクラスターに対して作成された自動スナップショットにアクセスするために使用される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.shcrontabスケジュールタスクを設定し、スクリプトを実行する時間を指定します。 この例では、スクリプトは毎日 02:00 に実行されます。
crontab -e 0 2 * * * /bin/bash /root/snapshot.shcrontabスケジュールタスクを再起動します。
sudo /usr/sbin/cron restart
自動スナップショットが作成され、リポジトリに保存されると、スナップショットの削除、スナップショットからのデータの復元、復元情報のクエリなどの操作を実行できます。 詳細については、「手動スナップショットの作成と手動スナップショットからのデータの復元」をご参照ください。