Alibaba Cloud Elasticsearch では、クラスターに共有 Object Storage Service (OSS) リポジトリを設定できます。共有リポジトリを使用すると、あるクラスターの自動スナップショットから別のクラスターにデータを復元できます。
たとえば、es-cn-a と es-cn-b という 2 つの Elasticsearch V6.7.0 クラスターがあるとします。es-cn-a では自動スナップショット機能が有効になっており、自動スナップショットが作成されています。スナップショットデータを es-cn-b に復元するには、es-cn-a の OSS リポジトリを es-cn-b 上で共有 OSS リポジトリとして設定します。
背景情報
Alibaba Cloud Elasticsearch クラスターのデータバックアップとデータ復元は、elasticsearch-repository-oss プラグインに依存します。このプラグインは、すべての Alibaba Cloud Elasticsearch クラスターにデフォルトでインストールされており、削除することはできません。詳細については、「elasticsearch-repository-oss」をご参照ください。
前提条件
ソースクラスターと宛先クラスターは、次の要件をすべて満たす必要があります。
クラスターは同じリージョンにあります。
クラスターが同じ Alibaba Cloud アカウントに属していること。
ソース クラスターのバージョンは、宛先 クラスターのバージョンより前であるか、または同一です。
両方のクラスターが Standard Edition の V6.7.0 である場合、クラスターには最新のカーネルを使用する必要があります。または、宛先クラスターのカーネルバージョンがソースクラスターのカーネルバージョンよりも新しい必要があります。
Elasticsearch クラスターは、同じバージョンまたはそれ以前のバージョンの Elasticsearch クラスターのリポジトリのみを使用できます。
クラスターが旧バージョンのクラスターのリポジトリを使用する場合、データ形式に互換性がない可能性があります。たとえば、Elasticsearch V5.5.3 クラスターのリポジトリにあるスナップショットから、ドキュメントタイプが 1 つしかないインデックスを Elasticsearch V6.7.0 クラスターに復元することはできます。しかし、同じ V5.5.3 リポジトリから複数のドキュメントタイプを持つインデックスを復元しようとすると、Elasticsearch V6.7.0 クラスターは複数のドキュメントタイプを持つインデックスをサポートしていないため、エラーが発生する可能性があります。
共有 OSS リポジトリの追加
Alibaba Cloud Elasticsearch コンソールにログインします。
左側のナビゲーションウィンドウで、[Elasticsearch クラスター] をクリックします。
対象のクラスターに移動します。
上部のナビゲーションバーで、クラスターが属するリソースグループとクラスターが存在するリージョンを選択します。
[Elasticsearch クラスター] ページで、対象のクラスターを見つけてその ID をクリックします。
表示されたページの左側のナビゲーションウィンドウで、[データバックアップ] をクリックします。
[共有 OSS リポジトリ] セクションで、[今すぐ作成] をクリックします。
説明共有 OSS リポジトリを追加するのが初めてでない場合は、[共有リポジトリの作成] をクリックします。
[共有リポジトリの作成] ダイアログボックスで、Elasticsearch クラスターを選択します。
重要選択したクラスターは、上記の前提条件をすべて満たす必要があります。
[OK] をクリックします。
共有リポジトリが追加されると、ページにはリポジトリを所有するクラスターとリポジトリのステータスが表示されます。
システムは、選択された Elasticsearch クラスターに基づいてリポジトリリストを取得します。クラスターが構成を更新中であるか、異常な状態であるか、または高負荷である場合、システムはリポジトリリストの取得に失敗することがあります。この場合、クラスターの Kibana コンソールにログインし、GET _snapshot コマンドを実行して、すべてのリポジトリのエンドポイントを取得してください。
共有リポジトリからのインデックスの復元
共有 OSS リポジトリは、Elasticsearch クラスター間でデータを共有するためにのみ使用されます。コンソールから直接データを復元することはできません。代わりに、宛先クラスターの Kibana コンソールで復元コマンドを実行する必要があります。
次の例では、es-cn-a クラスターから file-2019-08-25 インデックスを復元する方法を示します。
ステップ 1:Kibana コンソールを開く
宛先 Elasticsearch クラスターの Kibana コンソールにログインします。詳細については、「Kibana コンソールへのログイン」をご参照ください。
説明この例では、Elasticsearch V6.7.0 クラスターを使用します。他のバージョンのクラスターでの操作は異なる場合があります。コンソールでの実際の操作が優先されます。
左側のナビゲーションウィンドウで、[開発ツール] をクリックします。
ステップ 2:利用可能なスナップショットのクエリ
[コンソール] タブで、次のコマンドを実行して、共有リポジトリ内のすべてのスナップショットをクエリします。
GET /_cat/snapshots/aliyun_snapshot_from_es-cn-a?vこのコマンドは、リポジトリ内のすべてのスナップショットの ID、ステータス、およびその他の詳細を返します。
aliyun_snapshot_from_es-cn-a は、前のセクションで追加された共有リポジトリの名前です。
ステップ 3:インデックスの復元
インデックスを復元する前に、宛先クラスターに同じ名前のインデックスが存在しないことを確認してください。宛先クラスターに同じ名前のインデックスが存在する場合は、そのインデックスが閉じていることを確認してください。インデックスが開いている場合、復元中にエラーが発生します。
名前がピリオド (
.) で始まるインデックスはシステムインデックスです。これらのインデックスは復元しないことを推奨します。システムインデックスを復元すると、Kibana コンソールへのアクセス時に障害が発生する可能性があります。
スナップショットのクエリ結果に基づいて、次のいずれかの復元オプションを選択します。
単一インデックスの復元
POST _snapshot/aliyun_snapshot_from_es-cn-a/es-cn-a_20190705220000/_restore
{
"indices": "file-2019-08-25"
}複数インデックスの復元
POST _snapshot/aliyun_snapshot_from_es-cn-a/es-cn-a_20190705220000/_restore
{
"indices": "file-2019-08-25,file-2019-08-26"
}システムインデックスを除くすべてのインデックスの復元
POST _snapshot/aliyun_snapshot_from_es-cn-a/es-cn-a_20190705220000/_restore
{
"indices": "*,-.*"
}