AWS Database Migration Service のターゲットとしての Amazon Elasticsearch Service クラスターの使用 - AWS Database Migration Service

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

AWS Database Migration Service のターゲットとしての Amazon Elasticsearch Service クラスターの使用

を使用して、 AWS DMS ( Amazon Elasticsearch Service ) にデータを移行できます。 Amazon ES は、 Amazon ES クラスターのデプロイ、オペレーション、スケーリングを簡単に行える管理サービスです。Amazon ES

Amazon ES では、インデックスとドキュメントを操作します。インデックスは、ドキュメントのコレクションです。ドキュメントは、スカラー値、配列などのオブジェクトを含む JSON オブジェクトです。Elasticsearch には JSON ベースのクエリ言語があるため、インデックスでデータをクエリして、対応するドキュメントを取得することができます。

AWS DMS で Amazon ES のターゲットエンドポイントのインデックスが作成されるとき、ソースエンドポイントから各テーブルに 1 つのインデックスが作成されます。Amazon ES インデックスを作成するためのコストは、いくつかの要因によって異なります。その要因とは、作成されたインデックスの数、そのインデックス内のデータの合計量、ドキュメントごとに Elasticsearch が保存する少量のメタデータです。

移行の範囲に適したコンピューティングリソースやストレージリソースを使用して Amazon ES クラスターを設定します。使用するレプリケーションタスクに応じて、次の要素を考慮することをお勧めします。

  • 全データロードの場合、移行するデータの合計量、さらに転送の速度を考慮します。

  • 継続的な変更のレプリケートの場合、更新頻度、エンドツーエンドのレイテンシーの要件を考慮します。

また、Elasticsearch クラスターでインデックス設定を行い、ドキュメントの数に細心の注意を払います。

マルチスレッド全ロードタスク設定

転送の速度を高めるために、 AWS DMSは Amazon ES ターゲットクラスターへのマルチスレッドフルロードをサポートしています。 AWS DMSは、このマルチスレッドでのタスク設定を次のようにサポートします。

  • MaxFullLoadSubTasks – 並行してロードするソーステーブルの最大数を指定するには、このオプションを使用します。DMS は、専用のサブタスクを使用して、対応する Amazon ES ターゲットインデックスに各テーブルをロードします。デフォルトは 8、最大値は 49 です。

  • ParallelLoadThreads – AWS DMS が各テーブルを Amazon ES ターゲットインデックスにロードするために使用するスレッドの数を指定するには、このオプションを使用します。Amazon ES ターゲットの最大値は 32 です。この上限を増やすよう依頼できます。

    注記

    ParallelLoadThreads をデフォルト値 (0) から変更しない場合、AWS DMS は一度に 1 つのレコードを転送します。このアプローチでは、Amazon ES クラスターへの負荷が過度にかかります。このオプションを 1 以上に設定していることを確認します。

  • ParallelLoadBufferSize – Amazon ES ターゲットにデータをロードするために並列ロードスレッドが使用する、バッファ内に保存するレコードの最大数を指定するには、このオプションを使用します。デフォルト値は 50 です。最大値は 1000 です。この設定は ParallelLoadThreads で使用します。ParallelLoadBufferSize は、複数のスレッドがある場合にのみ有効です。

DMS がマルチスレッドを使用して Amazon ES クラスターをロードする方法の詳細については、Scale Amazon Elasticsearch Service for AWS Database Migration Service migrations の AWS ブログ投稿を参照してください。

マルチスレッド CDC ロードタスクの設定

タスク設定を使用して Amazon ES API 呼び出しの動作を変更することで、 PutRecords ターゲットクラスターの変更データキャプチャ (CDC) のパフォーマンスを向上させることができます。これを行うには、ParallelApply* タスク設定を使用して、同時スレッドの数、スレッドあたりのキュー数、バッファに格納するレコード数を指定します。たとえば、CDC ロードを実行し、128 個のスレッドを並列に適用するとします。また、スレッドあたり 64 個のキューにアクセスして、バッファあたり 50 個のレコードを保存する必要があります。

注記

ParallelApply*バージョン 3.4.0 以降では、CDC 中にAmazon Elasticsearch Serviceターゲットエンドポイントに対してAWS DMSタスク設定の使用がサポートされています。

CDC のパフォーマンスを向上させるため、AWS DMS では次のタスク設定をサポートしています。

  • ParallelApplyThreads – データレコードを Amazon ES ターゲットエンドポイントにプッシュするために CDC ロード中に AWS DMS が使用する同時スレッドの数を指定します。デフォルト値は 0 で、最大値は 32 です。

  • ParallelApplyBufferSize – CDC ロード中に同時スレッドが Amazon ES ターゲットエンドポイントにプッシュする場合に、各バッファキューに格納するレコードの最大数を指定します。デフォルト値は 50 で、最大値は 1,000 です。このオプションは、ParallelApplyThreads が複数のスレッドを指定する場合に使用します。

  • ParallelApplyQueuesPerThread – 各スレッドがキューからデータレコードを取り出し、CDC 中に Amazon ES エンドポイントのバッチロードを生成するためにアクセスするキューの数を指定します。

ParallelApply* タスク設定を使用する場合、partition-key-type のデフォルトは schema-name.table-name ではなくテーブルの primary-key です。

リレーショナルデータベーステーブルから Amazon ES インデックスへの移行

AWS DMSは、 Amazon ES のスカラーデータ型へのデータの移行をサポートしています。Oracle や MySQL などのリレーショナルデータベースから に移行する場合は、データを格納する方法を再編成が必要となる場合があります。Amazon ES

AWS DMS は以下の Amazon ES のスカラーデータ型をサポートしています。

  • Boolean

  • 日付

  • Float

  • Int

  • 文字列

AWS DMS は、日付型のデータを文字列に変換します。これらの日付を解釈するカスタムマッピングを指定できます。

AWS DMS は LOB データ型の移行をサポートしていません。

AWS Database Migration Service のターゲットとして Amazon Elasticsearch Service を使用する場合の前提条件

のターゲットとして Amazon ES データベースを使用し始める前に、 AWS DMS (IAM) ロールを必ず作成してください。AWS Identity and Access Managementこのロールは、 がターゲットエンドポイントでAWS DMSインデックスAmazon ESにアクセスできるようにする必要があります。アクセス許可の最小設定は、次の IAM ポリシーで示します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Amazon ES に移行する際に使用するロールには、次のアクセス許可が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttpDelete", "es:ESHttpGet", "es:ESHttpHead", "es:ESHttpPost", "es:ESHttpPut" ], "Resource": "arn:aws:es:region:account-id:domain/domain-name/*" } ] }

前の例では、 を AWS リージョン識別子regionに置き換えます。account-id を AWS アカウント ID、およびdomain-nameドメインの名前Amazon Elasticsearch Serviceに置き換えます。例: 「arn:aws:es:us-west-2:123456789012:domain/my-es-domain」。

AWS DMS のターゲットとして Amazon ES を使用する場合の追加の接続属性

Amazon ESターゲットエンドポイントを設定するときに、追加の接続属性を指定できます。追加の接続属性はキーと値のペアを指定して、セミコロンで区切ります。

次の表に、 Amazon ES インスタンスを AWS DMS ソースとして使用するときに使用できる追加の接続属性を示します。

Attribute Nameは 有効な値 デフォルト値と説明

fullLoadErrorPercentage

0 より大きく、100 より小さい正の整数。

10 – 全ロードタスクの場合、この属性によって、タスクが失敗するまでに許容されるエラーのしきい値が決まります。たとえば、ソースエンドポイントに 1,500 行あり、このパラメータが 10 に設定されているとします。ターゲットエンドポイントに書き込むときに AWS DMS で 150 を超えるエラー (行数の 10%) が発生した場合、そのタスクは失敗します。

errorRetryDuration

0 より大きい正の整数。

300 – ターゲットエンドポイントでエラーが発生した場合、AWS DMS はこの秒数の間再試行します。再試行しない場合、タスクは失敗します。

AWS Database Migration Service のターゲットとして Amazon Elasticsearch Service を使用する場合の制限

ターゲットとして Amazon Elasticsearch Service を使用する場合、以下の制限が適用されます。

  • Amazon ESでは、動的マッピング (自動予測) を使用して、移行済みデータに使用するデータ型を決定します。

  • Amazon ESは、一意の ID を持つ各ドキュメントを保存します。以下は ID の例です。

    "_id": "D359F8B537F1888BC71FE20B3D79EAE6674BE7ACA9B645B0279C7015F6FF19FD"

    各ドキュメント ID は 64 バイト長であるため、ストレージ要件と予想されます。たとえば、 AWS DMS ソースから 100,000 行を移行する場合、結果のAmazon ESインデックスには追加で 6,400,000 バイトのストレージが必要です。

  • Amazon ES を使用すると、プライマリキー属性を更新することはできません。この制限は、ターゲットで不要なデータが発生する可能性があるため、変更データキャプチャ (CDC) で継続的なレプリケーションを使用する場合に重要です。CDC モードでは、プライマリキーは 32 バイト長の SHA256 値にマップされます。これらは、人間が読み取れる 64 バイトの文字列に変換され、Amazon ESドキュメントとして使用されますIDs。

  • AWS DMS で移行できない項目が発生した場合、Amazon CloudWatch Logs にエラーメッセージを書き込みます。この動作は、例外テーブルにエラーを書き込む他の AWS DMS ターゲットエンドポイントの動作とは異なります。

  • AWS DMSでは、マスターユーザーとパスワードを使用してきめ細かなアクセス制御が有効になっている Amazon ES クラスターへの接続はサポートされていません。

Amazon Elasticsearch Service のターゲットデータ型

AWS DMS が異なるデータベースからデータを移行するときは、サービスはソースデータベースからのデータ型を、AWS DMS データ型という中間のデータ型にマッピングします。その後、サービスは中間データ型をターゲットデータ型にマッピングします。次の表は、各データ型と でのマッピング先のデータ型を示していますAWS DMS。Amazon ES

AWS DMS データ型 Amazon ES データ型

Boolean

boolean

日付

string

時間

日付

タイムスタンプ

date

INT4

integer

Real4

float

UINT4

integer

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型」を参照してください。