スナップショットとリストアを使用した Elasticsearch データ・マイグレーション
Object Storageを利用して、 Elasticsearch の 2 つのインスタンス間でデータをマイグレーションします。 スナップショットおよびリストア方式を使用して、ソース・インスタンスからスナップショットを取得し、それらを Object Storageに保管してから、それらのスナップショットを Object Storage からターゲット・インスタンスにリストアします。
このチュートリアルでは、スナップショットとリストア、 IBM Cloud Object Storage 、および Databases for Elasticsearchの 2 つのインスタンスを使用します。 ただし、このプロセスは、すべての S3-compatible オブジェクト・ストレージ・ソリューションおよび Elasticsearchのすべてのデプロイメントに適用できます。
Terraform とシェル・スクリプトを使用してプロセスを簡素化しました。 このページに概説されている手順に従って、必要な変数を必要に応じて差し込みます。
スナップショットおよびリストア・プロセスを使用して Elasticsearch 7.9/7.10 からバージョン 7.17にアップグレードする場合は、プランを Standard から Enterprise に変更する必要があります。 リストアするバックアップの「プロビジョニング」ページで 「リストア」 をクリックし、ドロップダウン・メニューから 7.17 を選択して、プランを変更します。
生産性の向上
データをマイグレーションする前に、 Terraform をインストールして、必要なインフラストラクチャーをコーディングしてデプロイします。 また、 IBM Cloud アカウント も必要です。
ステップ 1: IBM Cloud API キーを取得し、 GitHub リポジトリーを複製する
以下の手順 に従って、Terraform がインフラストラクチャーをアカウントにプロビジョンできるようにする IBM Cloud API キーを作成します。 最大 20 個の API キーを作成できます。
安全上の理由により、API キーをコピーまたはダウンロードできるのは作成時のみになります。 API キーを紛失した場合は、新しい API キーを作成する必要があります。
次に、 Elasticsearch Snapshot/Restore GitHub Repository をローカル・マシンに複製します。
git clone https://github.com/IBM/elasticsearch-cos-snapshot-restore.git
このフォルダーを複製した後、ローカル・マシン上に新しく作成したプロジェクト・フォルダーにナビゲートします。
ステップ 2: Terraform スクリプトをインストールして実行する
terraform フォルダー には、スナップショットを作成および復元するために必要なインフラストラクチャーを作成するファイルが含まれています。
cos.tf
cos.tf
は、 Cloud Object Storage インスタンスとバケットを作成します。 restoreCOSInstance
、 restoreBucket
、 resourceKey
のリソースを更新します。 このスクリプトは、 bucket_credentials
と bucket_name
を出力します。
elastic.tf
elastic.tf
は、ソース、ターゲット、および必要な構成を作成します。 resource "ibm_database" "esSource"
および resource "ibm_database" "esTarget"
の変数を入力します。 次に、このスクリプトは必要な構成変数を出力します。
main.tf
main.tf
には、モジュールの構成のメイン・セットが含まれています。 ibmcloud_api_key
変数の場合、 IBM Cloud® API キー を作成または取得します。 次に、リソース・グループと ibm_resource_group
変数を指定します。これにより、 resource_group_name
が出力されます。
variables.tf
variables.tf
には、変数定義 ibmcloud_api_key
、 region
、および elastic_password
が含まれています。 API キー、優先リージョン、および
Elasticsearch パスワードを使用してこれらの変数を更新します。
リソース、構成、および変数をセットアップした後、先に進み、Terraform スクリプトを実行します。 Terraform フォルダーにナビゲートし、以下のコマンドを使用してインフラストラクチャーをインストールします。
terraform init
terraform apply --auto-approve
Terraform スクリプトは、アプリケーションを実行するために必要な構成データを出力するため、それをルート・フォルダーにコピーします。
terraform output -json >../config.json
ステップ 3: シェル・スナップショット・スクリプトを実行する
メイン・プロジェクト・フォルダー内の migrate.sh ファイルを実行します。 このシェル・スクリプトは、 config.json
ファイルによって提供される情報を使用して、必要なマイグレーション・ステップを実行します。
- タイム・スタンプを追加して、別のスナップショット名を作成します。
- データベースおよび S3/COS パラメーターを取得します。
- ソース・デプロイメントに S3/COS バケットをマウントします。
- ターゲット・デプロイメントに S3/COS バケットをマウントします。
- Cloud Databasesによって保護されている
icd-auth index
にアクセスせずにリストアを実行できるように、ターゲット上のすべての索引を閉じます。
データを完全にバックアップするために必要な回数だけ migrate.sh を実行します。
スナップショットは増分であるため、最初のスナップショットは残りのスナップショットよりも時間がかかります。
COS バケットに必要なスナップショットがすべて揃ったら、ソースへの書き込みをすべて停止します。 次に、 migrate.sh をもう一度実行して、最終スナップショットを作成し、それをターゲットに復元します。 これで、すべてのデータがターゲットになりました。 アプリケーションがターゲット・データベースを指すようにすると、アップグレードが完了します。
ユーザー・パスワードの取得と更新
以前のバージョンからの更新として Elasticsearch 7.17 にリストアする場合、既存のユーザー・パスワードは無効になるため、リストア後にリセットする必要があります。 詳しくは、 ユーザー・パスワードの取得と更新 を参照してください。