本トピックでは、Data Transmission Service (DTS) を使用して PolarDB-X 1.0 から Elasticsearch へデータを移行する方法について説明します。
前提条件
-
ソースの PolarDB-X 1.0 インスタンスを作成済みである必要があります。詳細については、「」および「PolarDB-X 1.0 インスタンスの作成」をご参照ください。
説明PolarDB-X 1.0 インスタンスのストレージタイプは、カスタム RDS インスタンスまたは個別に購入した RDS インスタンスなど、RDS for MySQL である必要があります。PolarDB for MySQL はサポートされていません。
-
宛先の Elasticsearch インスタンスを作成済みである必要があります。詳細については、「Alibaba Cloud Elasticsearch インスタンスの作成」をご参照ください。
-
宛先の Elasticsearch インスタンスのストレージ容量は、ソースの PolarDB-X 1.0 インスタンスのストレージ容量より大きい必要があります。
注意事項
|
種別 |
説明 |
|
ソースデータベースの制限事項 |
|
|
その他の制限事項 |
|
|
その他の注意事項 |
DTS は、ソースデータベース内の `dts_health_check`.`ha_health_check` テーブルを定期的に更新し、バイナリログのオフセットを進めます。 |
費用
課金方法
|
移行タイプ |
インスタンス構成料金 |
インターネットトラフィック料金 |
|
スキーマ移行および完全データ移行 |
無料です。 |
宛先データベースの アクセス方法 パラメーターが パブリック IP アドレス に設定されている場合、インターネットトラフィック料金が発生します。詳細については、「課金の概要」をご参照ください。 |
|
増分データ移行 |
課金対象です。詳細については、「課金の概要」をご参照ください。 |
移行タイプ
-
スキーマ移行
DTS は、移行対象のスキーマ定義をソースデータベースから宛先データベースへ移行します。
-
完全移行
DTS は、指定された移行対象の全既存データをソースデータベースから宛先データベースへ移行します。
-
増分移行
完全移行が完了した後、DTS はソースデータベースからの増分データ更新を宛先データベースへ移行します。増分移行により、自己管理アプリケーションを中断することなくスムーズにデータを移行できます。
増分移行でサポートされる SQL 操作
|
操作タイプ |
SQL 操作文 |
|
DML |
INSERT、UPDATE、DELETE 説明
DTS は、UPDATE 文によるフィールド削除操作の移行をサポートしていません。 |
データベースアカウントの権限
|
データベース |
スキーマ移行 |
完全移行 |
増分移行 |
|
PolarDB Distributed Edition インスタンス |
SELECT |
SELECT |
移行対象に対する読み取りおよび書き込み権限。 説明
権限の付与方法については、「アカウント管理」をご参照ください。 |
|
Elasticsearch インスタンス |
データベースアカウントには読み取りおよび書き込み権限が必要です。デフォルトのアカウントは elastic です。 |
||
データ型のマッピング
ソースデータベースと Elasticsearch インスタンスではサポートされるデータ型が異なるため、データ型を常に直接マッピングできるわけではありません。初期スキーマ同期の際、DTS は宛先 Elasticsearch インスタンスがサポートするデータ型に基づいてデータ型をマッピングします。詳細については、「初期スキーマ同期におけるデータ型のマッピング」をご参照ください。
説明DTS は、スキーマ移行時に
mappingパラメーターをdynamicに設定しません。このパラメーターの動作は、ご利用の Elasticsearch インスタンスの設定によって異なります。ソースデータが JSON 形式の場合、テーブル内のすべての行において、同じキーの値が同一のデータ型であることを確認してください。これを満たさない場合、DTS が同期エラーを報告する可能性があります。詳細については、「dynamic」をご参照ください。以下の表は、Elasticsearch とリレーショナルデータベース間のマッピングを示しています。
Elasticsearch
リレーショナルデータベース
インデックス
データベース
タイプ
テーブル
ドキュメント
行
フィールド
カラム
マッピング
データベーススキーマ
操作手順
-
以下のいずれかの方法で、宛先リージョンの移行タスク一覧ページに移動します。
DTS コンソールから
-
Data Transmission Service (DTS) コンソール にログインします。
-
左側のナビゲーションウィンドウで、データの移行 をクリックします。
-
ページの左上隅で、移行インスタンスが配置されているリージョンを選択します。
DMS コンソールから
説明実際の操作は、DMS コンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモードコンソール」および「DMS コンソールのレイアウトおよびスタイルのカスタマイズ」をご参照ください。
-
Data Management (DMS) コンソール にログインします。
-
トップメニューで、 を選択します。
-
データ移行タスク の右側で、移行インスタンスが配置されているリージョンを選択します。
-
-
タスクの作成 をクリックして、タスク設定ページに移動します。
-
ソースおよび宛先データベースを構成します。
カテゴリ
構成
説明
なし
タスク名
DTS がタスク名を自動生成します。識別が容易になるよう、意味のある名前を指定することを推奨します。名前は一意である必要はありません。
ソースデータベース
既存の接続情報の選択
-
システムに追加済み(作成または保存済み)のデータベースインスタンスを使用する場合は、ドロップダウンリストから目的のデータベースインスタンスを選択してください。以下に表示されるデータベース情報は自動的に構成されます。
説明DMS コンソールでは、このパラメーターの名称は DMS データベースインスタンスの選択 です。
-
データベースインスタンスをシステムに登録していない場合、または登録済みのインスタンスを使用する必要がない場合は、以下のデータベース情報を手動で構成してください。
データベースタイプ
PolarDB-X 1.0 を選択します。
アクセス方法
クラウドインスタンス を選択します。
インスタンスリージョン
ソースの PolarDB-X 1.0 インスタンスが配置されているリージョンを選択します。
Alibaba Cloud アカウントをまたぐ?
本例では同一の Alibaba Cloud アカウントを使用します。「アカウントをまたがない」を選択します。
RDS インスタンス ID
ソースの PolarDB-X 1.0 インスタンス ID を選択します。
データベースアカウント
ソースの PolarDB-X 1.0 インスタンスのデータベースアカウントを入力します。権限要件については、「データベースアカウントの権限」をご参照ください。
データベースパスワード
このデータベースアカウントのパスワードを入力します。
宛先データベース
既存の接続情報の選択
-
システムに追加済み(作成または保存済み)のデータベースインスタンスを使用する場合は、ドロップダウンリストから目的のデータベースインスタンスを選択してください。以下に表示されるデータベース情報は自動的に構成されます。
説明DMS コンソールでは、このパラメーターの名称は DMS データベースインスタンスの選択 です。
-
データベースインスタンスをシステムに登録していない場合、または登録済みのインスタンスを使用する必要がない場合は、以下のデータベース情報を手動で構成してください。
データベースタイプ
Elasticsearch を選択します。
アクセス方法
クラウドインスタンス を選択します。
インスタンスリージョン
宛先の Elasticsearch インスタンスが配置されているリージョンを選択します。
タイプ
クラスター または サーバーレス を用途に応じて選択します。
インスタンス ID
宛先の Elasticsearch インスタンス ID を選択します。
データベースアカウント
Elasticsearch インスタンス作成時に指定した ログイン名 を入力できます。デフォルトのアカウントは elastic です。
データベースパスワード
このデータベースアカウントのパスワードを入力します。
暗号化
必要に応じて、HTTP または HTTPS を選択します。
-
-
構成を完了したら、ページ下部の 接続をテストして続行 をクリックします。
説明-
DTS サービスの IP アドレス範囲を、ソースおよび宛先データベースのセキュリティ設定に自動または手動で追加し、DTS サーバーからのアクセスを許可してください。詳細については、「DTS サーバーの IP アドレスをホワイトリストに追加」をご参照ください。
-
ソースまたは宛先データベースが自己管理データベース(アクセス方法 が Alibaba Cloud インスタンス でない場合)、表示される DTS サーバーの CIDR ブロック ダイアログボックス内で、接続テスト をクリックする必要があります。
-
-
タスクオブジェクトを構成します。
-
オブジェクト設定 ページで、移行対象のオブジェクトを構成します。
構成
説明
同期タイプ
-
完全移行のみを実行する場合は、スキーマ移行 および 完全データ移行 の両方を選択します。
-
ダウンタイムなしで移行を実行する場合は、スキーマ移行、完全データ移行、および 増分データ移行 を選択します。
説明-
スキーマ移行 を選択しない場合は、宛先データベースにデータを受信するためのデータベースおよびテーブルが存在することを確認してください。必要に応じて、選択中のオブジェクト ボックス内のオブジェクト名マッピング機能も使用できます。
-
増分データ移行 を選択しない場合は、データ移行中にソースインスタンスへの新規データの書き込みを行わず、データ整合性を確保してください。
競合テーブルの処理モード
-
エラーの事前チェックと報告:宛先データベースに同名のテーブルが存在するかどうかをチェックします。同名のテーブルが存在しない場合は、事前チェックは合格します。同名のテーブルが存在する場合は、事前チェックでエラーが報告され、データ移行タスクは開始されません。
説明宛先データベースのテーブルが同名であるものの、簡単に削除または名前変更できない場合は、宛先データベースのテーブル名を変更できます。詳細については、「オブジェクト名マッピング」をご参照ください。
-
エラーを無視して続行:同名のテーブルのチェックをスキップします。
警告エラーを無視して続行 を選択すると、データの不整合やビジネスリスクが発生する可能性があります。たとえば:
-
テーブルスキーマが一致しており、宛先データベースのレコードとソースデータベースのレコードでプライマリキー値が同一の場合:
-
完全移行中、DTS は宛先データベースのレコードを保持し、ソースデータベースのレコードは移行されません。
-
増分移行中、DTS は宛先データベースのレコードを保持せず、ソースデータベースのレコードが宛先データベースのレコードを上書きします。
-
-
テーブルスキーマが一致しない場合、一部のカラムのデータのみが移行されるか、移行が失敗する可能性があります。慎重に操作してください。
-
インデックス名
-
テーブル名 を選択すると、宛先の Elasticsearch インスタンスでテーブル名がインデックス名として使用されます。
-
データベース名_テーブル名 を選択すると、宛先の Elasticsearch インスタンスで、データベース名、アンダースコア (_)、テーブル名を連結したインデックス名が作成されます。
説明インデックス名のマッピングは、すべてのテーブルに適用されます。
宛先インスタンスでのオブジェクト名の大文字化
宛先インスタンスの移行対象のデータベース名、テーブル名、カラム名の大文字小文字区別を設定します。デフォルトでは、DTS のデフォルトポリシー を選択します。また、ソースまたは宛先データベースのデフォルトポリシーに合わせることもできます。詳細については、「宛先データベースオブジェクト名の大文字小文字区別ポリシー」をご参照ください。
ソースオブジェクト
ソースオブジェクト ボックスで、移行対象のオブジェクトをクリックし、
をクリックして 選択中のオブジェクト ボックスに移動します。説明移行対象としてテーブルを選択することを推奨します。データベース全体を移行対象として選択した場合、そのデータベース内でのテーブルの追加や削除などの変更は、宛先データベースに移行されません。
[選択済みオブジェクト]
宛先インスタンスに移行するオブジェクトの名前を変更するには、選択済みオブジェクト セクションで該当オブジェクトを右クリックします。詳細については、「個別テーブルカラムのマッピング」をご参照ください。
複数のオブジェクトを一度に名前変更するには、一括編集 を 選択済みオブジェクト セクションの右上隅でクリックします。詳細については、「複数のオブジェクト名を一度にマッピング」をご参照ください。
説明-
インデックス名およびタイプ名では、特殊文字としてアンダースコア (_) のみが許可されます。
-
オブジェクト名マッピングを使用すると、依存オブジェクトの移行が失敗する可能性があります。
-
WHERE 句を使用してデータをフィルターするには、選択済みオブジェクト 内で移行対象のテーブルを右クリックし、ダイアログボックスでフィルター条件を設定します。手順については、「フィルター条件の設定」をご参照ください。
-
データベースまたはテーブルレベルで 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 カラムになります。
ETL 機能の設定
監視アラート
ビジネス要件に応じて、アラートの設定およびアラート通知の受信を行うかどうかを選択します。
-
×:アラートを設定しません。
-
○:アラートを設定するには、アラートしきい値 および アラート通知 を設定します。移行が失敗した場合や遅延がしきい値を超えた場合、システムからアラート通知が送信されます。
-
-
上記の構成を完了したら、ページ下部の 次へ:データベースおよびテーブルフィールドの構成 をクリックして、宛先の Elasticsearch で移行対象のテーブルの _routing 戦略および _id 値を設定します。
種別
説明
_routing の構成?
_routing を設定すると、ドキュメントが宛先 Elasticsearch インスタンスの特定のシャードにルーティングされます。詳細については、「_routing」をご参照ください。
-
カスタムカラムをルーティングに使用する場合は、はい を選択します。
-
_id を使用してルーティングする場合は、いいえ を選択します。
説明宛先の Elasticsearch インスタンスのバージョンが 7.x の場合、いいえ を選択します。
_routing 列
ルーティングに使用するカラムを選択します。
説明このパラメーターは、_routing の構成? を はい に設定した場合にのみ必須です。
_id 値
ドキュメント ID として使用するカラムを選択します。
-
-
-
タスクを保存して事前チェックを実行します。
-
API 操作を呼び出す際にこのインスタンスを構成するパラメーターを確認するには、次:タスク設定の保存と事前チェック ボタンにポインターを合わせ、表示される吹き出しで OpenAPI パラメーターのプレビュー をクリックします。
-
API パラメーターの確認が必要ない場合、または確認を完了した場合は、ページ下部の 次:タスク設定の保存と事前チェック をクリックします。
説明-
移行タスクが開始される前に、DTS が事前チェックを実行します。チェックに合格した場合にのみ、タスクが開始されます。
-
事前チェックが失敗した場合、失敗したチェック項目の横にある 詳細を表示 をクリックし、表示されたメッセージに従って問題を修正した後、再度事前チェックを実行してください。
-
事前チェックで警告が報告された場合:
-
無視できないチェック項目については、失敗した項目の横にある 詳細を表示 をクリックし、表示されたメッセージに従って問題を修正した後、再度事前チェックを実行してください。
-
無視できるチェック項目については、アラートの詳細を確認、無視、OK、および 再度事前チェックを実行 をクリックしてアラート項目を無視し、再度事前チェックを実行できます。警告を無視すると、データの不整合などの問題が発生し、ビジネスにリスクを及ぼす可能性があります。
-
-
-
インスタンスを購入します。
-
成功率 が 100 % の場合、次:インスタンスの購入 をクリックします。
-
購入 ページで、データ移行インスタンスのリンク仕様を選択します。詳細については、以下の表をご参照ください。
カテゴリ
パラメーター
説明
新しいインスタンスクラス
リソースグループの設定
インスタンスが属するリソースグループを選択します。デフォルト値はデフォルトリソースグループです。詳細については、「Resource Management とは?」をご参照ください。
インスタンスクラス
DTS は、さまざまなパフォーマンスレベルの移行仕様を提供しています。リンク仕様は移行速度に影響します。ビジネスシナリオに応じて仕様を選択できます。詳細については、「データ移行リンク仕様」をご参照ください。
-
構成が完了したら、Data Transmission Service (従量課金) 利用規約 を読み、同意してください。
-
購入して起動 をクリックします。表示される OK ダイアログボックスで、OK をクリックします。
移行タスクの進行状況は、データ移行タスク 一覧ページで確認できます。
説明-
移行タスクに増分移行が含まれていない場合、完全移行が完了するとタスクは自動的に停止します。タスクが停止すると、その ステータス は 完了 に変わります。
-
移行タスクに増分移行が含まれている場合、タスクは自動的に停止しません。増分移行タスクは継続して実行されます。増分移行タスクが実行中の場合、タスクの ステータス は 実行中 になります。
-
-