このトピックでは、Data Transmission Service (DTS) を使用して、PolarDB-X 2.0 から Elasticsearch インスタンスにデータを移行する方法について説明します。
前提条件
-
ソース PolarDB-X 2.0 インスタンスが作成されていること。
-
ターゲット Elasticsearch インスタンスが作成されていること。詳細については、「Alibaba Cloud Elasticsearch インスタンスの作成」をご参照ください。
-
ソースインスタンスとターゲットインスタンスでサポートされているバージョンについては、「移行シナリオの概要」をご参照ください。
-
ターゲット Elasticsearch インスタンスのストレージ容量は、ソース PolarDB-X 2.0 インスタンスのストレージ容量よりも大きい必要があります。
注意事項
スキーマ移行中、DTS は外部キーをソースデータベースからターゲットデータベースに移行します。
完全データ移行および増分データ移行中、DTS はセッションレベルで制約チェックと外部キーのカスケード操作を一時的に無効にします。タスクの実行中にソースデータベースでカスケード更新または削除操作が発生した場合、データ不整合が発生する可能性があります。
タイプ | 説明 |
ソースデータベースの制限 |
|
その他の制限 |
|
その他の注意事項 | DTS は、バイナリログのオフセットを進めるために、ソースデータベースの `dts_health_check`.`ha_health_check` テーブルを定期的に更新します。 |
課金
|
移行タイプ |
インスタンス構成料金 |
インターネットトラフィック料金 |
|
スキーマ移行と完全データ移行 |
無料。 |
ターゲットデータベースの アクセス方法 パラメーターが パブリック IP アドレス に設定されている場合、インターネットトラフィックに対して課金されます。詳細については、「課金の概要」をご参照ください。 |
|
増分データ移行 |
有料。詳細については、「課金の概要」をご参照ください。 |
移行タイプ
-
スキーマ移行
DTS は、移行オブジェクトのスキーマ定義をソースデータベースからターゲットデータベースに移行します。
-
完全移行
DTS は、指定された移行オブジェクトのすべての既存データをソースデータベースからターゲットデータベースに移行します。
-
増分移行
完全移行が完了した後、DTS は増分データ更新をソースデータベースからターゲットデータベースに移行します。増分移行により、自己管理アプリケーションを中断することなく、データをスムーズに移行できます。
増分移行でサポートされる SQL 操作
|
操作タイプ |
SQL 操作文 |
|
DML |
INSERT、UPDATE、DELETE 説明
DTS は、UPDATE 文を使用してフィールドを削除する操作の移行をサポートしていません。 |
アカウントの権限
|
データベース |
スキーマ移行 |
完全移行 |
増分移行 |
|
ソース PolarDB-X 2.0 インスタンス |
SELECT 権限 |
SELECT 権限 |
移行対象オブジェクトに対する REPLICATION SLAVE、REPLICATION CLIENT、および SELECT 権限。 説明 権限の付与方法の詳細については、「データ同期中のアカウント権限の問題」をご参照ください。 |
|
ターゲット Elasticsearch インスタンス |
データベースアカウントには読み取りおよび書き込み権限が必要です。通常、これは elastic アカウントです。 |
||
データ型のマッピング
ソースデータベースと Elasticsearch インスタンスではサポートされるデータ型が異なるため、データ型を直接マッピングできない場合があります。初期スキーマ同期中、DTS はターゲット Elasticsearch インスタンスがサポートする型に基づいてデータ型をマッピングします。詳細については、「初期スキーマ同期のデータ型マッピング」をご参照ください。
説明DTS は、スキーマ移行中に
dynamicのmappingパラメーターを設定しません。このパラメーターの動作は、ご利用の Elasticsearch インスタンスの設定に依存します。ソースデータが JSON 形式の場合、テーブル内のすべての行で同じキーの値が同じデータ型であることを確認してください。そうでない場合、DTS が同期エラーを報告する可能性があります。詳細については、「dynamic」をご参照ください。次の表に、Elasticsearch とリレーショナルデータベース間のマッピングを示します。
Elasticsearch
リレーショナルデータベース
インデックス
データベース
タイプ
テーブル
ドキュメント
行
フィールド
列
マッピング
データベーススキーマ
操作手順
-
次のいずれかの方法で、ターゲットリージョンの移行タスク一覧ページに移動します。
DTS コンソールから
-
左側のナビゲーションウィンドウで、データの移行 をクリックします。
-
ページの左上隅で、移行インスタンスが配置されているリージョンを選択します。
DMS コンソールから
説明実際の操作は、DMS コンソールのモードとレイアウトによって異なる場合があります。詳細については、「シンプルモードコンソール」および「DMS コンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。
-
Data Management (DMS) コンソールにログインします。
-
トップメニューバーで、 を選択します。
-
データ移行タスク の右側で、移行インスタンスが配置されているリージョンを選択します。
-
タスクの作成 をクリックして、タスク設定ページに移動します。
-
ソースデータベースとターゲットデータベースを設定します。
警告ソースインスタンスとターゲットインスタンスを選択した後、ページの上部に表示される制限を注意深くお読みになることを推奨します。そうしないと、タスクが失敗したり、データ不整合が発生したりする可能性があります。
カテゴリ
構成
説明
なし
タスク名
DTS は自動的にタスク名を生成します。識別しやすいように、わかりやすい名前を指定することを推奨します。名前は一意である必要はありません。
ソースデータベース
既存の接続情報の選択
-
システムに追加された (作成または保存された) データベースインスタンスを使用するには、ドロップダウンリストから目的のデータベースインスタンスを選択します。以下のデータベース情報が自動的に設定されます。
説明DMS コンソールでは、このパラメーターは DMS データベースインスタンスの選択 という名前です。
-
データベースインスタンスをシステムに登録していない場合、または登録済みのインスタンスを使用する必要がない場合は、以下のデータベース情報を手動で設定します。
データベースタイプ
[PolarDB-X 2.0] を選択します。
アクセス方法
[クラウドインスタンス] を選択します。
インスタンスリージョン
ソース PolarDB-X 2.0 インスタンスが存在するリージョンを選択します。
Alibaba Cloud アカウント間でデータを複製
この例では、同じ Alibaba Cloud アカウント内でデータを移行します。× を選択します。
インスタンス ID
ソース PolarDB-X 2.0 インスタンスの ID を選択します。
データベースアカウント
ソース PolarDB-X 2.0 インスタンスのデータベースアカウントを入力します。権限要件については、「アカウントの権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを入力します。
宛先データベース
既存の接続情報の選択
-
システムに追加された (作成または保存された) データベースインスタンスを使用するには、ドロップダウンリストから目的のデータベースインスタンスを選択します。以下のデータベース情報が自動的に設定されます。
説明DMS コンソールでは、このパラメーターは DMS データベースインスタンスの選択 という名前です。
-
データベースインスタンスをシステムに登録していない場合、または登録済みのインスタンスを使用する必要がない場合は、以下のデータベース情報を手動で設定します。
データベースタイプ
[Elasticsearch] を選択します。
アクセス方法
[クラウドインスタンス] を選択します。
インスタンスリージョン
ターゲット Elasticsearch インスタンスが存在するリージョンを選択します。
タイプ
必要に応じて [クラスター] または [Serverless] を選択します。
[インスタンス ID]
ターゲット Elasticsearch インスタンスの ID を選択します。
データベースアカウント
ターゲット Elasticsearch インスタンスのデータベースアカウント (デフォルトアカウントは elastic) を入力します。権限要件については、「アカウントの権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを入力します。
暗号化
必要に応じて HTTP または HTTPS を選択します。
-
-
設定が完了したら、ページ下部の 接続をテストして続行 をクリックします。
説明-
DTS サーバーからのアクセスを許可するために、DTS サービスの IP アドレスセグメントがソースデータベースとターゲットデータベースのセキュリティ設定に自動または手動で追加されていることを確認してください。詳細については、「DTS サーバーの IP アドレスをホワイトリストに追加する」をご参照ください。
-
ソースまたはターゲットデータベースが自己管理データベース (アクセス方法 が Alibaba Cloud インスタンス ではない) の場合、表示される DTS サーバーの CIDR ブロック ダイアログボックスで 接続テスト をクリックする必要もあります。
-
-
タスクオブジェクトを設定します。
-
オブジェクト設定 ページで、移行するオブジェクトを設定します。
構成
説明
移行タイプ
-
完全移行のみを実行する必要がある場合は、スキーマ移行 と 完全データ移行 の両方を選択します。
-
ダウンタイムなしで移行を実行するには、スキーマ移行、完全データ移行、および 増分データ移行 を選択します。
説明-
スキーマ移行 を選択しない場合は、データを受け取るためのデータベースとテーブルがターゲットデータベースに存在することを確認する必要があります。必要に応じて、選択中のオブジェクト ボックスのオブジェクト名マッピング機能を使用することもできます。
-
増分データ移行 を選択しない場合は、データ整合性を確保するために、データ移行中にソースインスタンスに新しいデータを書き込まないでください。
インデックス名
-
[テーブル名]
[テーブル名] を選択した場合、ターゲット Elasticsearch インスタンスで作成されるインデックス名はテーブル名と一致します。この例では、インデックス名は order です。
-
データベース_テーブル
[データベース_テーブル] を選択した場合、ターゲット Elasticsearch インスタンスで作成されるインデックス名は database_table です。この例では、インデックス名は dtstest_order です。
競合するテーブルの処理モード
-
エラーの事前チェックと報告:ターゲットデータベースに同じ名前のテーブルが存在するかどうかをチェックします。同じ名前のテーブルが存在しない場合、事前チェックは合格します。同じ名前のテーブルが存在する場合、事前チェック中にエラーが報告され、データ移行タスクは開始されません。
説明ターゲットデータベースのテーブルが同じ名前で、簡単に削除または名前変更できない場合は、ターゲットデータベースのテーブル名を変更できます。詳細については、「オブジェクト名マッピング」をご参照ください。
-
エラーを無視して続行:同じ名前のテーブルのチェックをスキップします。
警告エラーを無視して続行 を選択すると、データ不整合やビジネスリスクが発生する可能性があります。例:
-
テーブルスキーマが一致し、ターゲットデータベースのレコードがソースデータベースのレコードと同じプライマリキー値を持つ場合:
-
完全移行中、DTS はターゲットデータベースのレコードを保持します。ソースデータベースからのレコードは移行されません。
-
増分移行中、DTS はターゲットデータベースのレコードを保持しません。ソースデータベースからのレコードがターゲットデータベースのレコードを上書きします。
-
-
テーブルスキーマが一致しない場合、データの一部の列のみが移行されるか、移行が失敗する可能性があります。注意して進めてください。
-
移行先インスタンスでのオブジェクト名の大文字化
ターゲットインスタンスの移行オブジェクトのデータベース、テーブル、および列名の大文字/小文字ポリシーを設定できます。デフォルトでは、[DTS デフォルトポリシー] が選択されています。ソースまたはターゲットデータベースに一致するポリシーを選択することもできます。詳細については、「ターゲットオブジェクト名の大文字/小文字変換ポリシー」をご参照ください。
ソースオブジェクト
ソースオブジェクト セクションから 1 つ以上のオブジェクトを選択します。
アイコンをクリックして、オブジェクトを [選択したオブジェクト] セクションに追加します。説明移行オブジェクトを選択する粒度は、スキーマ、テーブル、および列です。移行オブジェクトとしてテーブルまたは列のみを選択した場合、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトはターゲットデータベースに移行されません。
[選択済みオブジェクト]
ターゲットインスタンスに移行するオブジェクトの名前を変更するには、[選択したオブジェクト] セクションでオブジェクトを右クリックします。詳細については、「個別のテーブル列マッピング」をご参照ください。
一度に複数のオブジェクトの名前を変更するには、[選択したオブジェクト] セクションの右上隅にある [バッチ編集] をクリックします。詳細については、「一度に複数のオブジェクト名をマッピングする」をご参照ください。
説明-
インデックス名とタイプ名では、特殊文字としてアンダースコア (_) のみがサポートされます。
-
オブジェクト名マッピング機能を使用すると、このオブジェクトに依存する他のオブジェクトの移行が失敗する可能性があります。
-
WHERE 句を使用してデータをフィルターするには、[選択したオブジェクト] で移行するテーブルを右クリックし、表示されるダイアログボックスでフィルター条件を設定します。詳細については、「SQL 条件を使用してタスクデータをフィルターする」をご参照ください。
-
データベースまたはテーブルレベルで移行する SQL 操作を選択するには、[選択したオブジェクト] で移行するオブジェクトを右クリックし、表示されるダイアログボックスで移行する SQL 操作を選択します。
-
-
詳細設定へ をクリックして、詳細パラメーターを設定します。
構成
説明
タスクのスケジュールに使用する専用クラスターの選択
デフォルトでは、DTS は共有クラスターでタスクをスケジュールします。選択する必要はありません。より安定したタスクが必要な場合は、専用クラスターを購入して DTS 移行タスクを実行できます。
失敗した接続の再試行時間
移行タスクが開始された後、ソースまたはターゲットデータベースへの接続が失敗した場合、DTS はエラーを報告し、すぐに接続のリトライを開始します。デフォルトのリトライ時間は 720 分です。リトライ時間を 10 分から 1440 分の範囲でカスタマイズできます。30 分以上に設定することを推奨します。指定された時間内に DTS がソースおよびターゲットデータベースに再接続した場合、移行タスクは自動的に再開されます。そうでない場合、タスクは失敗します。
説明-
同じソースまたはターゲットを共有する複数の DTS インスタンスの場合、ネットワークリトライ時間は最後に作成されたタスクの設定によって決まります。
-
接続リトライ期間中もタスクは課金されるため、ビジネスニーズに基づいてリトライ時間をカスタマイズするか、ソースおよびターゲットデータベースインスタンスがリリースされた後、できるだけ早く DTS インスタンスをリリースすることを推奨します。
移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。
移行タスクが開始された後、DDL または DML 実行例外などの接続以外の問題がソースまたはターゲットデータベースで発生した場合、DTS はエラーを報告し、すぐに操作のリトライを開始します。デフォルトのリトライ時間は 10 分です。リトライ時間を 1 分から 1440 分の範囲でカスタマイズできます。10 分以上に設定することを推奨します。指定されたリトライ時間内に関連操作が成功した場合、移行タスクは自動的に再開されます。そうでない場合、タスクは失敗します。
重要移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 の値は、失敗した接続の再試行時間 の値より小さくする必要があります。
完全移行率を制限するかどうか
完全移行中、DTS はソースおよびターゲットデータベースの読み取りおよび書き込みリソースを消費し、データベースの負荷が増加する可能性があります。必要に応じて、完全移行タスクの速度制限を有効にできます。1 秒あたりのソースデータベースのクエリ率 QPS、1 秒あたりの完全移行の行数 RPS、および 1 秒あたりの完全移行データ量 (MB) BPS を設定して、ターゲットデータベースの負荷を軽減できます。
説明-
この設定項目は、移行タイプ で 完全データ移行 を選択した場合にのみ利用できます。
-
移行インスタンスの実行後に 完全移行速度を調整することもできます。
増分移行率を制限するかどうか
必要に応じて、増分移行タスクの速度制限を設定することもできます。1 秒あたりの増分移行の行数 RPS と 1 秒あたりの増分移行データ量 (MB) BPS を設定して、ターゲットデータベースの負荷を軽減できます。
説明-
この設定項目は、移行タイプ で 増分データ移行 を選択した場合にのみ利用できます。
-
移行インスタンスの実行後に 増分移行速度を調整することもできます。
環境タグ
必要に応じてインスタンスを識別するための環境タグを選択します。この例では選択は不要です。
シャード構成
ターゲット Elasticsearch インスタンスのインデックスの最大シャード設定に基づいて、インデックスのプライマリシャードとレプリカシャードの数を設定します。
文字列インデックス
ターゲット Elasticsearch インスタンスに移行する際の文字列のインデックス方法を指定します。
-
analyzed:インデックスを作成する前に文字列を分析します。特定のアナライザーも選択する必要があります。アナライザーの種類と機能については、「アナライザー」をご参照ください。
-
not analyzed:文字列を分析しません。元の値を直接インデックスします。
-
no:文字列をインデックスしません。
タイムゾーン
DTS が時間型データ (DATETIME や TIMESTAMP など) をターゲット Elasticsearch インスタンスに移行する際に、タイムゾーンを指定できます。
説明ターゲットインスタンスの時間型データにタイムゾーンが不要な場合は、移行前にターゲットインスタンスでこの時間型データのドキュメントタイプ (type) を設定してください。
DOCID
デフォルトでは、DOCID はテーブルのプライマリキーです。テーブルにプライマリキーがない場合、DOCID は Elasticsearch によって自動生成される ID 列です。
順方向および逆方向タスクのハートビートテーブル SQL を削除
DTS インスタンスの実行中にハートビート SQL 情報をソースデータベースに書き込むかどうかを選択します。
○:ハートビート SQL 情報はソースデータベースに書き込まれません。これにより、DTS インスタンスが遅延を報告する可能性があります。
×:ハートビート SQL 情報をソースデータベースに書き込みます。これにより、ソースデータベースの物理バックアップやクローニングなどの機能に干渉する可能性があります。
ETL 機能の設定
抽出・変換・書き出し (ETL) 機能を有効にするかどうかを選択します。詳細については、「ETL とは何か?」をご参照ください。有効な値:
-
○:ETL 機能を有効にします。コードエディタにデータ処理文を入力します。詳細については、「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。
-
×:ETL 機能を無効にします。
監視アラート
ビジネスニーズに基づいてアラートを設定し、アラート通知を受け取るかどうかを選択します。
-
×:アラートを設定しません。
-
○:アラートしきい値とアラート通知を設定してアラートを構成します。移行が失敗した場合や遅延がしきい値を超えた場合、システムはアラート通知を送信します。
-
-
上記の設定が完了したら、ページ下部の 次:データベースおよびテーブルのフィールド設定 をクリックして、ターゲット Elasticsearch インスタンスで移行するテーブルの `_routing` ポリシーと `_id` 値を設定します。
タイプ
説明
_routing の設定
_routing を設定すると、ターゲット Elasticsearch インスタンスの特定のシャードにドキュメントをルーティングして保存できます。詳細については、「_routing」をご参照ください。
-
○ を選択して、カスタム列をルーティングに使用します。
-
× を選択して、_id をルーティングに使用します。
説明ターゲット Elasticsearch インスタンスがバージョン 7.x の場合、[いいえ] を選択する必要があります。
_id の値
-
[テーブルのプライマリキー列]
複合プライマリキーは単一の列にマージされます。
-
ビジネス プライマリキー
[ビジネスプライマリキー] を選択した場合は、対応する [ビジネスプライマリキー列] も設定する必要があります。
-
-
-
タスクを保存し、事前チェックを実行します。
-
API 操作を呼び出す際にこのインスタンスを設定するためのパラメーターを表示するには、次:タスク設定の保存と事前チェック ボタンにポインターを合わせ、表示されるバブルで OpenAPI パラメーターのプレビュー をクリックします。
-
API パラメーターを表示する必要がない場合、または表示が完了した場合は、ページ下部の 次:タスク設定の保存と事前チェック をクリックします。
説明-
移行タスクが開始される前に、DTS は事前チェックを実行します。タスクは事前チェックに合格した後にのみ開始されます。
-
事前チェックが失敗した場合は、失敗したチェック項目の横にある 詳細を表示 をクリックし、プロンプトに基づいて問題を修正してから、再度事前チェックを実行します。
-
事前チェック中に警告が報告された場合:
-
無視できないチェック項目については、失敗した項目の横にある 詳細を表示 をクリックし、プロンプトに基づいて問題を修正してから、再度事前チェックを実行します。
-
無視できるチェック項目については、アラートの詳細を確認、無視、OK、および 再度事前チェックを実行 をクリックして、アラート項目をスキップし、再度事前チェックを実行できます。警告を無視することを選択した場合、データ不整合などの問題が発生し、ビジネスにリスクをもたらす可能性があります。
-
-
-
インスタンスを購入します。
-
成功率 が 100% になったら、次:インスタンスの購入 をクリックします。
-
購入 ページで、データ移行インスタンスのリンク仕様を選択します。詳細については、次の表をご参照ください。
カテゴリ
パラメーター
説明
新しいインスタンスクラス
リソースグループの設定
インスタンスが属するリソースグループを選択します。デフォルト値はデフォルトリソースグループです。詳細については、「Resource Management とは」をご参照ください。
インスタンスクラス
DTS は、異なるパフォーマンスレベルの移行仕様を提供します。リンク仕様は移行速度に影響します。ビジネスシナリオに基づいて仕様を選択できます。詳細については、「データ移行リンクの仕様」をご参照ください。
-
設定が完了したら、Data Transmission Service (従量課金) 利用規約 を読んで選択します。
-
購入して起動 をクリックします。表示される OK ダイアログボックスで、[OK] をクリックします。
データ移行タスク 一覧ページで移行タスクの進捗状況を確認できます。
説明-
移行タスクに増分移行が含まれていない場合、完全移行が完了すると自動的に停止します。タスクが停止すると、その ステータス は 完了 に変わります。
-
移行タスクに増分移行が含まれている場合、自動的に停止しません。増分移行タスクは実行を続けます。増分移行タスクの実行中、タスクの ステータス は 実行中 です。
-
-
移行されたインデックスとデータの表示
データ移行タスクが 実行中 状態になった後、データ可視化ツール Kibana を使用して Elasticsearch インスタンスに接続し、作成されたインデックスと移行されたデータがビジネスの期待を満たしていることを確認します。ログイン方法については、「Kibana コンソールへのログイン」をご参照ください。
結果がビジネスの期待を満たさない場合は、インデックスとそのデータを削除し、データ移行タスクを再設定してください。