オブジェクトストレージサービス(OSS)に保存されているスナップショットを使用して、セルフマネージド Elasticsearch クラスターから Alibaba Cloud Elasticsearch クラスターにデータを移行できます。 データを移行するには、スナップショット API を呼び出して、セルフマネージド Elasticsearch クラスターのスナップショットを作成し、OSS に保存します。 その後、スナップショットから Alibaba Cloud Elasticsearch クラスターにデータをリストアします。 このトピックでは、手順を詳細に説明します。
背景情報
OSS を使用すると、セルフマネージド Elasticsearch クラスターから Alibaba Cloud Elasticsearch クラスターに大量のデータを移行できます。
手順
セルフマネージド Elasticsearch クラスターを準備し、OSS バケットと Alibaba Cloud Elasticsearch クラスターを作成します。
手順 2:elasticsearch-repository-oss プラグインをインストールする
セルフマネージド Elasticsearch クラスターの各ノードに elasticsearch-repository-oss プラグインをインストールします。 プラグインをインストールした後にのみ、セルフマネージド Elasticsearch クラスターの OSS リポジトリを作成できます。
手順 3:セルフマネージド Elasticsearch クラスターのスナップショットリポジトリを作成する
スナップショット API を呼び出して、セルフマネージド Elasticsearch クラスターのスナップショットリポジトリを作成します。
移行するインデックスのスナップショットを作成し、作成したスナップショットリポジトリに保存します。
手順 5:Alibaba Cloud Elasticsearch クラスターに同じスナップショットリポジトリを作成する
Alibaba Cloud Elasticsearch クラスターの Kibana コンソールで、スナップショット API を呼び出して、クラスターのスナップショットリポジトリを作成します。 スナップショットリポジトリの名前は、セルフマネージド Elasticsearch クラスターのスナップショットリポジトリと同じ名前にする必要があります。
手順 6:作成したスナップショットから Alibaba Cloud Elasticsearch クラスターにデータをリストアする
セルフマネージド Elasticsearch クラスターのスナップショットリポジトリにあるスナップショットから Alibaba Cloud Elasticsearch クラスターにデータをリストアします。
リストアされたインデックスとインデックス内のデータを確認します。
手順 1:準備を行う
セルフマネージド Elasticsearch クラスターを準備します。
Alibaba Cloud Elastic Compute Service(ECS)インスタンスに Elasticsearch クラスターをデプロイすることをお勧めします。 詳細については、「Installing and Running Elasticsearch」をご参照ください。
説明セルフマネージド Elasticsearch クラスターをデプロイするには、Alibaba Cloud Elasticsearch クラスターと同じ仮想プライベートクラウド(VPC)内の Alibaba Cloud ECS インスタンスを使用することをお勧めします。 セルフマネージドサーバーを使用してクラスターをデプロイする場合、ネットワーク接続の問題が発生する可能性があります。
この例では、単一ノードの Elasticsearch V6.7.0 クラスターを使用しています。 実際の運用では、同じ VPC 内にある複数の ECS インスタンスを購入して、マルチノード Elasticsearch クラスターをデプロイできます。 ECS インスタンスの購入方法の詳細については、「カスタム起動タブでインスタンスを作成する」をご参照ください。
OSS をアクティブ化し、セルフマネージド Elasticsearch クラスターをホストする ECS インスタンスが存在するリージョンにバケットを作成します。
詳細については、「OSS をアクティブ化する」および「バケットを作成する」をご参照ください。
重要バケットのストレージクラスは Standard である必要があります。 Elasticsearch は Archive ストレージクラスをサポートしていません。
作成したバケットが存在するリージョンに Alibaba Cloud Elasticsearch クラスターを作成します。
詳細については、「Alibaba Cloud Elasticsearch クラスターを作成する」をご参照ください。
手順 2:elasticsearch-repository-oss プラグインをインストールする
セルフマネージド Elasticsearch クラスターをホストする ECS インスタンスに接続します。
詳細については、「パスワードまたはキーを使用して Linux インスタンスに接続する」をご参照ください。
説明この例では、通常のユーザーを使用しています。
elasticsearch-repository-oss プラグインのインストールパッケージをダウンロードします。
この例では、プラグインのバージョンは V6.7.0 です。 JDK 11.0 以降が必要です。
wget https://github.com/aliyun/elasticsearch-repository-oss/releases/download/v6.7.0/elasticsearch-repository-oss-6.7.0.zip説明別のバージョンの elasticsearch-repository-oss プラグインのインストールパッケージの入手方法の詳細については、「FAQ」をご参照ください。
ECS インスタンス上のセルフマネージド Elasticsearch クラスターのインストールパスの plugins フォルダーにインストールパッケージを解凍します。
sudo unzip -d /usr/local/elasticsearch-6.7.0/plugins/elasticsearch-repository-oss elasticsearch-repository-oss-6.7.0.zipコマンドを使用してプラグインをインストールすることもできます。
sudo ./bin/elasticsearch-plugin install file:///usr/local/elasticsearch-repository-oss-6.7.0.zipセルフマネージド Elasticsearch クラスターをホストする ECS インスタンスを起動します。
cd /usr/local/elasticsearch-6.7.0 ./bin/elasticsearch -d
手順 3:セルフマネージド Elasticsearch クラスターのスナップショットリポジトリを作成する
セルフマネージド Elasticsearch クラスターをホストする ECS インスタンスに接続し、次のコマンドを実行してスナップショットリポジトリを作成します:
sudo curl -H "Content-Type: application/json" -XPUT localhost:9200/_snapshot/<yourBackupName> -d' {"type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "<yourAccesskeyId>", "secret_access_key":"<yourAccesskeySecret>", "bucket": "<yourBucketName>", "compress": true }}'パラメーター | 説明 |
<yourBackupName> | リポジトリの名前。カスタマイズできます。 |
type | リポジトリのタイプ。 このパラメーターを oss に設定します。 |
endpoint | OSS バケットのエンドポイント。 詳細については、「リージョンとエンドポイント」をご参照ください。 説明 セルフマネージド Elasticsearch クラスターをホストする ECS インスタンスが OSS バケットと同じリージョンに存在する場合は、OSS バケットの内部エンドポイントを使用します。 それ以外の場合は、OSS バケットのパブリックエンドポイントを使用します。 |
access_key_id | OSS バケットの作成に使用される Alibaba Cloud アカウントの AccessKey ID。 AccessKey ID の取得方法の詳細については、「AccessKey ペアを取得するにはどうすればよいですか?」をご参照ください。 |
secret_access_key | OSS バケットの作成に使用される Alibaba Cloud アカウントの AccessKey シークレット。 AccessKey シークレットの取得方法の詳細については、「AccessKey ペアを取得するにはどうすればよいですか?」をご参照ください。 |
bucket | OSS バケットの名前。 |
compress | 圧縮を有効にするかどうかを指定します。 有効な値:
|
リポジトリが作成されると、"acknowledge":true が返されます。
手順 4:特定のインデックスのスナップショットを作成する
データを移行するインデックスのスナップショットを作成します。 デフォルトでは、開いている状態のすべてのインデックスがスナップショットにバックアップされます。 .kibana、.security、.monitoring で始まる名前のインデックスなどのシステムインデックスをバックアップしたくない場合は、バックアップするインデックスを指定できます。
システムインデックスは大きなストレージ容量を占有するため、バックアップしないことをお勧めします。
curl -H "Content-Type: application/json" -XPUT localhost:9200/_snapshot/<yourBackupName>/snapshot_1?pretty -d'
{
"indices": "index1,index2"
}'<yourBackupName> を、「手順 3:セルフマネージド Elasticsearch クラスターのスナップショットリポジトリを作成する」で作成したスナップショットリポジトリの名前に置き換えます。 index1 と index2 を、バックアップするインデックスの名前に置き換えます。 スナップショットが作成されると、"accepted" : true が返されます。
スナップショットの作成中に、GET /_snapshot/<yourBackupName>/<yourSnapshotName>/_status コマンドを実行して、スナップショットの詳細を表示できます。 レスポンスの state の値が SUCCESS の場合、スナップショットは作成されています。
手順 5:Alibaba Cloud Elasticsearch クラスターに同じスナップショットリポジトリを作成する
Elasticsearch クラスターの Kibana コンソールにログインし、プロンプトに従って Kibana コンソールのホームページに移動します。
Kibana コンソールへのログイン方法の詳細については、「Kibana コンソールにログインする」をご参照ください。
説明この例では、Elasticsearch V6.7.0 クラスターを使用しています。 他のバージョンのクラスターでの操作は異なる場合があります。 コンソールでの実際の操作が優先されます。
表示されるページの左側のナビゲーションペインで、[dev Tools] をクリックします。
表示されるページの [console] タブで、次のコマンドを実行して、セルフマネージド Elasticsearch クラスターのスナップショットリポジトリと同じ名前のスナップショットリポジトリを作成します。
PUT _snapshot/<yourBackupName> { "type": "oss", "settings": { "endpoint": "oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "<yourAccesskeyId>", "secret_access_key": "<yourAccesskeySecret>", "bucket": "<yourBucketName>", "compress": true } }<yourBackupName> と <yourBucketName> を、「手順 3:セルフマネージド Elasticsearch クラスターのスナップショットリポジトリを作成する」で指定したリポジトリ名とバケット名に置き換えます。
手順 6:作成したスナップショットから Alibaba Cloud Elasticsearch クラスターにデータをリストアする
Alibaba Cloud Elasticsearch クラスターの Kibana コンソールで、次のコマンドを実行して、作成したスナップショットからすべてのインデックス(. で始まる名前のシステムインデックスを除く)をリストアします。 操作を実行するには、「手順 5:Alibaba Cloud Elasticsearch クラスターに同じスナップショットリポジトリを作成する」の手順に従います。
POST _snapshot/es_backup/snapshot_1/_restore
{"indices":"*,-.monitoring*,-.security_audit*","ignore_unavailable":"true"}コマンドが正常に実行されると、"accepted" : true が返されます。
上記のコマンドは、スナップショット内のすべてのインデックスをリストアします。 リストアするインデックスを指定することもできます。 Alibaba Cloud Elasticsearch クラスターでは、既存のインデックスの名前が、リストアするインデックスと同じ名前になっている場合があります。 この場合、既存のインデックスのデータを上書きしたくない場合は、リストア中にリストアするインデックスの名前を変更できます。
POST _snapshot/es_backup/snapshot_1/_restore
{
"indices":"index1",
"rename_pattern": "index(.+)",
"rename_replacement": "restored_index_$1"
}スナップショットの作成またはデータのリストアに使用されるコマンドの詳細については、「手動スナップショットを作成し、手動スナップショットからデータをリストアする」をご参照ください。
手順 7:リストア結果を確認する
Alibaba Cloud Elasticsearch クラスターの Kibana コンソールで、次のコマンドを実行してリストア結果を確認します。 操作を実行するには、「手順 5:Alibaba Cloud Elasticsearch クラスターに同じスナップショットリポジトリを作成する」の手順に従います。
リストアされたインデックスを表示する
GET /_cat/indices?v
リストアされたインデックス内のデータを表示する
GET /index1/_searchコマンドが正常に実行されると、次の結果が返されます。
{ "took" : 2, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 1.0, "hits" : [ { "_index" : "index1", "_type" : "_doc", "_id" : "1", "_score" : 1.0, "_source" : { "productName" : "testpro", "annual_rate" : "3.22%", "describe" : "testpro" } } ] } }
FAQ
Q:別のバージョンの elasticsearch-repository-oss プラグインのインストールパッケージを取得するにはどうすればよいですか?
A:必要なバージョンの elasticsearch-repository-oss プラグインのインストールパッケージは、GitHub からダウンロードできます。 GitHub が必要なバージョンのインストールパッケージを提供していない場合は、マイナーバージョンが必要なバージョンのマイナーバージョンに最も近いバージョンのインストールパッケージをダウンロードすることをお勧めします。 その後、プラグインの plugin-descriptor.properties ファイルの次のパラメーターの値を変更し、ファイルを再度パッケージしてから、プラグインをインストールします。
version=必要なプラグインバージョン
elasticsearch.version=セルフマネージド Elasticsearch クラスターのバージョン
説明プラグインのバージョンは、セルフマネージド Elasticsearch クラスターのバージョンと同じである必要があります。
java.version=1.8
説明Elasticsearch クラスターのさまざまなバージョンは、さまざまなバージョンの JDK に依存しています。 実際の JDK バージョンは、オープンソース Elasticsearch と プラグイン によって決定されます。
オープンソース Elasticsearch はさまざまなクラスターバージョンを提供しており、さまざまなバージョンのクラスターがさまざまな方法でコンパイルされます。 したがって、クラスターに elasticsearch-repository-oss プラグインをインストールする前に、クラスターバージョンに基づいてプラグインをコンパイルおよびデバッグする必要があります。 たとえば、セルフマネージド Elasticsearch V7.6.2 クラスターをデプロイする場合、必要な JDK バージョンは 1.8 以降です。 コンパイルとデバッグの後、プラグインは elasticsearch-repository-oss-7.6.2 になります。