Alibaba Cloud Elasticsearch は、スナップショットバックアップを自動化するための 2 つのメソッドを提供します。バージョン 7.6 以降を実行しているクラスターでは、スナップショットライフサイクル管理 (SLM) を使用してスナップショットをスケジュールし、その保持を管理できます。バージョン 7.6 未満では、クライアント側の crontab ジョブを使用してスナップショット作成をトリガーする必要があります。どちらのメソッドも、スナップショットを OSS リポジトリに保存します。
背景情報
スナップショットライフサイクル管理の詳細については、「スナップショットライフサイクル管理」をご参照ください。
Elasticsearch でのデータのバックアップと復元は、elasticsearch-repository-oss プラグインに依存します。このプラグインは Alibaba Cloud Elasticsearch クラスターにプリインストール済みであり、削除することはできません。プラグインの詳細については、「elasticsearch-repository-oss」をご参照ください。
バージョン 7.6 以降 (推奨)
開始する前に、次の前提条件を満たしてください。
標準ストレージクラスの OSS バケットを作成します。アーカイブクラスのバケットはサポートされていません。バケットは、Elasticsearch クラスターと同じリージョンにある必要があります。手順については、「バケットの作成」をご参照ください。
OSS バケットを Elasticsearch クラスターに関連付けるためのリポジトリを作成します。手順については、「リポジトリの作成」をご参照ください。
クラスターの Kibana コンソールで、[Dev Tools] をクリックし、次の手順に従います。
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
クラスターの状態と機能の状態を含めるかどうかを指定します。
trueは含めることを示し、falseは含めないことを示します。retention.expire_after
スナップショットの保持期間です。この例では 30 日に設定されています。
retention.min_count
保持するスナップショットの最小数です。スナップショットが
expire_after期間より古い場合でも、この最小数は維持されます。retention.max_count
保持するスナップショットの最大数です。この上限を超えると、最も古いスナップショットがその経過期間に関係なく削除されます。
SLM ポリシーを実行して、すぐにスナップショットを作成します。
POST _slm/policy/auto-snapshots/_executeコマンドの実行後、Elasticsearch は
scheduleパラメーターに基づいて自動的にスナップショットを作成します。保持ポリシーをすぐに実行するには、次のコマンドを実行します。POST _slm/_execute_retention
バージョン 7.6 未満
バージョン 7.6 未満では SLM はサポートされていません。クライアント側の crontab ジョブを使用してスナップショットを自動化する必要があります。
開始する前に、次の前提条件を満たしてください。
標準ストレージクラスの OSS バケットを作成します。アーカイブクラスのバケットはサポートされていません。バケットは、Elasticsearch クラスターと同じリージョンにある必要があります。手順については、「バケットの作成」をご参照ください。
リポジトリを作成します。手順については、「リポジトリの作成」をご参照ください。
パブリックネットワークまたは内部ネットワーク経由で Elasticsearch クラスターにアクセスできるクライアントを構成します。詳細については、「クライアントを使用した Alibaba Cloud Elasticsearch クラスターへのアクセス」をご参照ください。
クライアントサーバーで、次の手順に従います。
スナップショットバックアップスクリプトを作成します。
vi /root/snapshot.shスクリプトファイルに次の内容を追加して保存します。
elastic:*****を実際のユーザー名とパスワードに、es-*****を実際のクラスター ID に置き換えます。curl -u elastic:***** -X PUT https://es-*****.public.elasticsearch.aliyuncs.com:9200/_snapshot/my_auto_backup_crontab/snapshot_$(date +%s)スクリプトに実行権限を付与します。
chmod +x /root/snapshot.shcrontab ジョブを構成します。次の例では、ジョブを毎日午前 2:00 に実行するように設定しています。
crontab -e次の行を追加します。
0 2 * * * /bin/bash /root/snapshot.shファイルを保存すると、crontab は新しい構成を自動的にロードします。cron サービスを再起動する必要はありません。
スナップショットをバックアップした後、それらを削除、復元、または詳細を表示できます。詳細については、「手動でのバックアップと復元」をご参照ください。スナップショットを別のクラスターに復元するには、同じ OSS バケットを指すリポジトリをターゲットクラスターに作成する必要があります。