Data Transmission Service (DTS) を使用して、PolarDB-X 2.0 インスタンスのデータ変更をストリーミングし、DataHub プロジェクトに送信します。この移行パスでは、スキーマ移行および増分データ移行がサポートされており、データがほぼリアルタイムで DataHub へ流れている間も、ソースデータベースはトラフィックの処理を継続できます。
事前準備
開始する前に、以下の条件を満たしていることを確認してください。
PolarDB-X 2.0 インスタンス。詳細については、「インスタンスの作成」をご参照ください。
移行データを受け取るアクティブな DataHub プロジェクト。詳細については、「クイックスタート(同期の例)」および「プロジェクトの管理」をご参照ください。
仕組み
DTS は PolarDB-X 2.0 インスタンスに接続し、バイナリログを読み取り、変更イベントをターゲットの DataHub プロジェクトに公開します。移行は以下の 2 つのフェーズで実行されます。
スキーマ移行:DTS は、データの送信を開始する前に、ソースから DataHub へテーブルスキーマ(外部キーを含む)をレプリケートします。
増分データ移行:スキーマ移行が完了した後、DTS はバイナリログから INSERT、UPDATE、DELETE 操作および ADD COLUMN DDL 文を継続的にキャプチャし、DataHub へ書き込みます。この間、ソースインスタンスはアプリケーショントラフィックの処理を継続します。
課金
| 移行タイプ | リンク構成料金 | データ転送料金 |
|---|---|---|
| スキーマ移行 | 無料 | 本例では課金されません |
| 増分データ移行 | 課金済み | 「課金概要 |
制限事項
ソースデータベース
| 制限事項 | 詳細 |
|---|---|
| 帯域幅 | ソースデータベースをホストするサーバーには、十分なアウトバウンド帯域幅が必要です。帯域幅が不足していると、移行速度が低下します。 |
| サポートされていないインスタンスタイプ | Enterprise Edition PolarDB-X 2.0 の読み取り専用インスタンスはサポートされていません。 |
| テーブル制約 | テーブルには、すべてのフィールドが一意である PRIMARY KEY または一意制約(UNIQUE constraint)が必要です。該当しない場合、宛先に重複レコードが生成される可能性があります。 |
| テーブル数 | 移行対象としてテーブルを選択し、宛先で名前を変更する場合、1 つのタスクで最大 1,000 個のテーブルをサポートします。それ以上の規模の移行を行う場合は、複数のタスクにテーブルを分割するか、データベース単位での移行を実施してください。 |
| バイナリログ(増分移行に必須) | バイナリログの有効化と、binlog_row_image の値を full への設定が必要です。いずれかの条件が満たされていない場合、事前チェックは失敗します。 |
| バイナリログ保持期間 | 増分のみの移行:バイナリログを 24 時間以上保持してください。完全+増分の移行:バイナリログを最低 7 日間保持してください。完全移行が完了した後は、保持期間を 24 時間以上に短縮できます。DTS が読み取る前にバイナリログが有効期限切れになると、タスクは失敗し、データの不整合や損失が発生する可能性があります。DTS のサービスレベルアグリーメント(SLA)は、ログ保持期間が不十分なことに起因する障害をカバーしません。 |
| 移行中の DDL 操作 | スキーマ移行または完全データ移行中に、データベースまたはテーブルのスキーマを変更する DDL 操作を実行しないでください。DTS が DDL を検出した場合、タスクは失敗します。 |
| 制約チェック | DTS は、移行中、セッションレベルで一時的に制約チェックおよび外部キーのカスケード操作を無効化します。この期間中にソースでカスケード更新または削除が実行された場合、データの不整合が発生する可能性があります。 |
| ネットワークタイプの変更 | 移行中に PolarDB-X 2.0 インスタンスのネットワークタイプを変更した場合、DTS タスクのネットワーク接続設定を更新して、変更内容と一致させる必要があります。 |
| 完全移行のみ | 完全移行のみの実行中は、ソースへの書き込みを行わないでください。データ整合性を確保するため、スキーマ移行および増分データ移行の両方を選択することを推奨します。 |
| サポートされていないオブジェクト | TABLEGROUP 内のテーブル、または Locality 属性を持つデータベース/スキーマ内のテーブルは移行できません。また、SQL の予約語(例:select)をテーブル名として使用しているテーブルもサポートされていません。 |
その他の制限
| 制限事項 | 詳細 |
|---|---|
| 移行粒度 | テーブル単位の移行のみがサポートされています。 |
| 文字列フィールドサイズ | 宛先 DataHub プロジェクトにおける単一の String フィールドの最大サイズは 2 MB です。 |
| 非ピーク時間帯の移行 | 開始前に、ソースおよび宛先データベースのパフォーマンスを評価してください。非ピーク時間帯に移行を実行することで、データベース負荷への影響を軽減できます。 |
| タスクの再開 | DTS は、失敗したタスクを最大 7 日間自動的にリトライします。ワークロードを宛先に切り替える前に、タスクを停止またはリリースするか、DTS データベースアカウントの書き込み権限を取り消すことで、再開されたタスクによる宛先データの上書きを防止してください。 |
| インスタンスの回復 | DTS インスタンスで障害が発生した場合、DTS ヘルプデスクは 8 時間以内に回復処理を試みます。回復処理中、DTS はインスタンスを再起動するか、DTS インスタンスのパラメーターを調整することがあります(データベースのパラメーターは変更対象外です)。変更される可能性のあるパラメーターのリストについては、「インスタンスのパラメーターを変更する」をご参照ください。 |
DTS は定期的にソースデータベース内のdts_health_check.ha_health_checkテーブルを更新し、バイナリログのオフセットを進めます。
必要な権限
タスクを作成する前に、ソースデータベースアカウントに以下の権限を付与してください。
| 権限 | 移行タイプ | 使用タイミング |
|---|---|---|
| SELECT | スキーマ移行、増分データ移行 | スキーマ移行および増分移行中に、テーブルスキーマおよびデータを読み取ります |
| REPLICATION SLAVE | 増分データ移行 | ソースに接続し、バイナリログイベントを読み取ります |
| REPLICATION CLIENT | 増分データ移行 | ログ位置を追跡するために、SHOW MASTER STATUS および SHOW BINARY LOGS を実行します |
権限の付与手順については、「データ同期に必要なアカウント権限」をご参照ください。
データ型マッピング
スキーマ移行時に適用されるデータ型マッピングについては、「初期スキーマ同期のデータ型マッピング」をご参照ください。
移行タスクの作成
エンドツーエンドの構成には、5 つのステップがあります。
データ移行ページを開きます。
ソースおよび宛先データベースを構成します。
オブジェクトを選択し、設定を構成します。
設定を保存して事前チェックを実行します。
インスタンスを購入し、移行を開始します。
ステップ 1:データ移行ページを開く
以下のコンソールのいずれかを使用して、データ移行ページを開きます。
DTS コンソール
DMS コンソール
ステップ 2:ソースおよび宛先データベースの構成
[タスクの作成] をクリックします。
警告ソースおよび宛先インスタンスを選択した後、構成ページの上部に表示される [制限事項] セクションを必ずご確認ください。
タスク名およびソースデータベースを構成します。
パラメーター 説明 タスク名 DTS はタスク名を自動的に生成します。タスクを識別しやすいように、分かりやすい名前を使用してください。一意である必要はありません。 [既存の接続を選択] データベース接続の管理ドロップダウンリストから登録済みのインスタンスを選択します。インスタンスが登録されていない場合は、手動で接続を設定します。登録済みのインスタンスの場合、DTS は残りのパラメーターを自動入力します。詳細については、「」をご参照ください。 データベースタイプ [PolarDB-X 2.0] を選択します。 アクセス方法 [クラウドインスタンス] を選択します。 インスタンスリージョン ソース PolarDB-X 2.0 インスタンスが存在するリージョンを選択します。 [クロスアカウント] [いいえ] (同一 Alibaba Cloud アカウント) を選択します。 [インスタンス ID] ソース PolarDB-X 2.0 インスタンスの ID を選択します。 データベースアカウント データベースアカウントを入力します。必要な最小権限については、「必要な権限」をご参照ください。 データベースパスワード データベースアカウントのパスワードを入力します。 宛先データベースを構成します。
パラメーター 説明 [既存の接続を選択] 登録済みの DataHub インスタンスを選択するか、手動で接続を構成してください。 データベースタイプ [DataHub] を選択します。 アクセス方法 [クラウドインスタンス] を選択します。 インスタンスリージョン 宛先 DataHub プロジェクトが存在するリージョンを選択します。 プロジェクト 宛先 DataHub プロジェクトを選択します。 [接続テストと続行] をクリックします。
DTSサーバーのCIDRブロックは、接続テストが成功する前に、ソースおよびターゲットデータベースのセキュリティグループまたはホワイトリストに追加する必要があります。詳細については、「DTSサーバーのIPアドレスをホワイトリストに追加する」をご参照ください。
ステップ 3:オブジェクトの選択と設定の構成
オブジェクトの構成
[オブジェクトの構成] ページで、以下の設定を構成します。
| パラメーター | 説明 |
|---|---|
| 移行タイプ | [スキーマ移行] と [増分移行] を選択します。PolarDB-X 2.0 から DataHub へのパスでは、この 2 つのタイプのみがサポートされています。増分移行をスキップする場合、移行中にソースインスタンスに書き込まないでください。 |
| 追加列の命名規則 | DTS は、各宛先テーブルにシステム列を追加します。宛先テーブルのスキーマに基づいて、[新しいルール] または [古いルール] を選択します。選択する前に、追加する列名が既存の列名と競合しないことを確認してください。詳細については、「追加列の名前と定義」をご参照ください。 |
| 競合するテーブルの処理モード | [事前チェックしてエラーを報告]:宛先テーブルがソーステーブルと名前を共有している場合、タスクは事前チェックに失敗します。続行する前に、オブジェクト名マッピングを使用して、競合するテーブルの名前を変更します。[エラーを無視して続行]:重複名チェックをスキップします。スキーマが同じでプライマリキーが一致する場合、完全移行では既存のレコードがスキップされ、増分移行では上書きされます。スキーマが異なる場合、一致する列のみが移行されるか、タスク全体が失敗します。 |
| 宛先インスタンスにおけるオブジェクト名の大文字/小文字の区別 | DataHub 内のデータベース、テーブル、および列名の大文字/小文字の区別を制御します。デフォルトは [DTS のデフォルトポリシー] です。詳細については、「宛先インスタンスでのオブジェクト名の大文字/小文字の指定」をご参照ください。 |
| ソースオブジェクト | [ソースオブジェクト] リストからデータベース、テーブル、または列を選択し、 |
| 選択したオブジェクト | 単一のオブジェクトの名前を変更するには、リストでそのオブジェクトを右クリックします。詳細については、「単一オブジェクト名のマッピング」をご参照ください。一度に複数のオブジェクトの名前を変更するには、[一括編集] をクリックします。詳細については、「複数オブジェクト名の一括マッピング」をご参照ください。オブジェクトの名前を変更すると、依存オブジェクトの移行が失敗する可能性があることにご注意ください。行をフィルターするには、テーブルを右クリックして WHERE 条件を設定します。詳細については、「フィルター条件の設定」をご参照ください。移行する SQL 操作を制限するには、移行オブジェクトを右クリックして操作を選択します。 |
高度な設定の構成
[次へ:高度な設定] をクリックし、以下のパラメーターを構成します。
| パラメーター | 説明 |
|---|---|
| [タスクスケジューリング用の専用クラスター] | デフォルトでは、DTS はタスクを共有クラスターにスケジュールします。より高い安定性を得るには、専用クラスターをご購入ください。詳細については、「DTS 専用クラスターとは」をご参照ください。 |
| [接続失敗時のリトライ時間] | ソースまたは宛先への接続が失敗した場合の DTS のリトライ時間です。範囲:10~1,440 分。デフォルト:720 分。30 分を超える値を設定してください。複数のタスクが同一のソースまたは宛先データベースを共有する場合、最後に構成された値が有効になります。リトライ期間中は、インスタンスに対して課金されます。 |
| [その他の問題発生時のリトライ時間] | DDL または DML 操作が失敗した場合の DTS の再試行時間。範囲:1~1,440 分。デフォルト:10 分。10 より大きい値を指定します。この値は、接続失敗時の再試行時間 より小さい必要があります。 |
| [増分データ移行の速度制限を有効化] | 宛先データベースへの負荷を軽減するために、移行速度を制限します。有効化すると、[増分データ移行の RPS] および [増分移行のデータ移行速度(MB/s)] を構成します。増分データ移行が選択されている場合にのみ利用可能です。 |
| 転送タスクと逆再生タスクのハートビートテーブルに対する SQL 操作を削除するかどうか | [はい]アラート通知設定:DTS はハートビート操作をソースに書き込みません。移行遅延が表示される場合があります。[いいえ]:DTS はハートビート操作をソースに書き込みます。これにより、ソースデータベースの物理バックアップおよびクローン作成に影響が出る可能性があります。 |
| 環境タグ | インスタンス環境を識別するための任意のタグです。 |
| [ETL の構成] | [はい]: 抽出・変換・書き出し(ETL) 機能を有効化し、データ処理文を入力します。詳細については、「データ移行またはデータ同期タスクでのETL の設定」および「ETL とは?」をご参照ください。[いいえ]: ETL を無効化します。 |
| [モニタリングとアラート] | はい: アラートのしきい値と通知の連絡先を設定します。タスクが失敗した場合、または移行遅延がしきい値を超えた場合にアラートが発生します。「モニタリングとアラートの設定」をご参照ください。いいえ: アラート機能を無効化します。 |
ステップ 4:設定の保存と事前チェックの実行
[次へ:タスク設定の保存と事前チェック] をクリックします。保存前にこのタスクの OpenAPI パラメーターを確認するには、ボタンにポインターを合わせて [OpenAPI パラメーターのプレビュー] をクリックします。
事前チェックが完了するまでお待ちください。
チェック項目が失敗した場合、[詳細の表示] をクリックし、報告された問題を修正した後、[再度事前チェック] をクリックします。
チェック項目に安全に無視できるアラートが表示された場合、[アラートの詳細の確認] → [詳細の表示] → [無視] → [OK] の順にクリックし、その後 [再度事前チェック] をクリックします。アラート項目を無視すると、データの不整合が発生する可能性があります。
すべての事前チェック項目が合格するまで、移行タスクを開始できません。
ステップ 5:インスタンスの購入と移行の開始
[成功率] が [100%] に達したら、[次へ:インスタンスの購入] をクリックします。
[インスタンスの購入] ページで、インスタンスを構成します。
パラメーター 説明 Resource Group 移行インスタンスのリソースグループです。デフォルト: default resource group。詳細については、「What is Resource Management?」をご参照ください。 Instance Class インスタンスクラスは移行速度を決定します。データ量とタイミング要件に基づいてクラスを選択してください。詳細については、「Instance classes of data migration instances」をご参照ください。 [Data Transmission Service(従量課金)サービス利用規約] を読み、同意します。
[購入して開始] をクリックし、[OK] をクリックします。
タスクの検証
タスクが開始された後、[データ移行] ページに移動して、そのステータスを監視します。
スキーマ移行+増分移行:タスクは継続的に実行され、自動的に停止しません。[ステータス] 列に [実行中] と表示されます。
[スキーマ移行のみ]:タスクは自動的に停止します。[ステータス] 列に [完了] と表示されます。
次のステップ
移行を停止してワークロードを DataHub に切り替えるには、トラフィックをリダイレクトする前に、DTS タスクを停止またはリリースしてください。タスクを停止しない場合、DTS が 7 日以内に再開し、宛先のデータを上書きする可能性があります。
タスク開始後に移行速度を変更するには、タスク構成内の速度制限設定を使用してください。
データ型マッピングの詳細については、「初期スキーマ同期のデータ型マッピング」をご参照ください。