Data Transmission Service (DTS) を使用して、PolarDB for MySQL クラスターから PolarDB-X 2.0 インスタンスへデータを移行します。DTS はスキーマ移行、完全なデータ移行、および増分データ移行をサポートしており、ダウンタイムを最小限に抑えながらスムーズな切り替えを実現します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
PolarDB-X 2.0 インスタンスが作成済みであること
PolarDB-X 2.0 インスタンスの利用可能なストレージ容量が、ソースとなる PolarDB for MySQL クラスターの全データサイズより大きいこと
課金
| 移行タイプ | インスタンス構成料金 | インターネットトラフィック料金 |
|---|---|---|
| スキーマ移行および完全なデータ移行 | 無料 | [アクセス方法] パラメーターがターゲットデータベースで [パブリック IP アドレス] に設定されている場合に課金されます。詳しくは、「課金概要」をご参照ください。 |
| 増分データ移行 | 課金済み。「課金概要」をご参照ください。 | — |
移行タイプ
DTS では、要件に応じて組み合わせ可能な 3 種類の移行タイプをサポートしています。
| 移行タイプ | 説明 |
|---|---|
| スキーマ移行 | 選択したオブジェクト(テーブル、ビュー、トリガー、ストアドプロシージャ、ストアドファンクション)のスキーマを移行します。routine_body(ストアドプロシージャおよびストアドファンクション)および select_statement(ビュー)は、移行中に変更できません。DTS はビュー、ストアドプロシージャ、およびストアドファンクションの SECURITY 属性を DEFINER から INVOKER に変更し、DEFINER を宛先データベースアカウントに設定します。DTS はユーザー情報は移行しません。宛先データベースでビュー、ストアドプロシージャ、またはストアドファンクションを呼び出すには、INVOKER に必要な権限を付与してください。 |
| 完全なデータ移行 | ソースデータベース内の選択したオブジェクトから、既存データを宛先データベースへ移行します。 |
| 増分データ移行 | 完全なデータ移行完了後に発生する継続的な変更を移行し、アプリケーションの稼働を継続させたまま、ソースデータベースと宛先データベースを同期状態に保ちます。サポートされる SQL 操作:INSERT、UPDATE、DELETE。 |
推奨構成:データ整合性を確保し、切り替え時のダウンタイムを最小限に抑えるため、スキーマ移行、完全なデータ移行、および 増分データ移行 を同時に選択することを推奨します。
制限事項
ソースデータベース
| 制限事項 | 詳細 |
|---|---|
| アウトバウンド帯域幅 | ソースデータベースサーバーには十分なアウトバウンド帯域幅が必要です。帯域幅が不足すると、移行速度が低下します。 |
| テーブル制約 | 移行対象のテーブルには、すべてのフィールドが一意である PRIMARY KEY または一意制約(UNIQUE constraint)が必要です。これを満たさない場合、宛先データベースに重複レコードが生成される可能性があります。 |
| オブジェクト名変更時のテーブル数 | テーブルを移行オブジェクトとして選択し、宛先データベースでテーブルまたはカラムの名前を変更する必要がある場合、1 つのタスクで最大 1,000 個のテーブルをサポートします。1,000 個を超える場合は、複数のタスクを設定するか、データベース全体を移行してください。 |
| 完全なデータ移行中の DDL | 完全なデータ移行中は、ソースデータベースに対して DDL 操作を実行しないでください。DDL 操作により、移行タスクが失敗する可能性があります。 |
| 完全移行のみ実行中の書き込み | 増分データ移行を含めずに完全なデータ移行のみを実行する場合、移行中にソースデータベースへの書き込みを行わないでください。同時書き込みにより、データの不整合が発生する可能性があります。 |
| 増分 DDL | 増分 DDL 操作は移行できません。増分移行中に DDL 操作を実行する場合は、まず宛先データベースで実行し、その後ソースデータベースで実行してください。 |
増分データ移行のためのバイナリロギング要件:
| パラメーター | 必須値 | 備考 |
|---|---|---|
| バイナリロギング機能 | 有効化 | タスク開始前に有効化する必要があります。無効の場合、事前チェックが失敗します。 |
loose_polar_log_bin | on | on に設定する必要があります。 |
| バイナリログ保持期間 | 最低 3 日間(推奨:7 日間) | 3 日未満で保持されたログは、タスクの失敗またはデータ損失を引き起こす可能性があります。 |
PolarDB for MySQL クラスターでバイナリロギングを有効化すると、バイナリログファイルのストレージ料金が発生します。設定手順については、「バイナリロギングの有効化」および「保存期間の変更」をご参照ください。
その他の制限事項
DTS は、ソース PolarDB for MySQL クラスターの読み取り専用ノードを移行しません。
DTS は、ソースクラスターの Object Storage Service (OSS) 外部テーブルを移行しません。
スキーマ移行中、DTS はソースデータベースから外部キー(foreign keys)を宛先データベースへ移行します。完全なデータ移行および増分データ移行中は、DTS はセッションレベルで外部キー制約(foreign key constraint)チェックおよびカスケード操作(cascade operations)を一時的に無効化します。移行中にソースデータベースでカスケード更新または削除操作が実行された場合、データの不整合が発生する可能性があります。
完全なデータ移行中、同時 INSERT 操作によりテーブルスペースフラグメント(tablespace fragment)が発生します。移行完了後の宛先データベースの使用テーブルスペースは、ソースデータベースよりも大きくなります。
DTS は FLOAT および DOUBLE カラムの値を
ROUND(COLUMN,PRECISION)を使用して取得します。精度(precision)が指定されていない場合、DTS は FLOAT に対して 38 桁、DOUBLE に対して 308 桁をデフォルト精度として設定します。これらのデフォルト値が要件を満たすかどうかを確認してください。DTS は、失敗したタスクを最大 7 日間再開しようと試みます。ワークロードを宛先データベースへ切り替える前に、失敗したタスクを停止またはリリースするか、DTS アカウントの書き込み権限を取り消すために
REVOKEを実行してください。そうしないと、再開された失敗タスクによって宛先データベースのデータが上書きされる可能性があります。DTS は、バイナリログ位置を進めるために、ソースデータベース上で定期的に
CREATE DATABASE IF NOT EXISTS \`test\`を実行します。タスクが失敗した場合、DTS のテクニカルサポートが 8 時間以内に復旧を試みます。復旧時にタスクが再起動され、タスクパラメーター(データベースパラメーターではない)が変更される場合があります。
必要な権限
| データベース | 必要な権限 |
|---|---|
| PolarDB for MySQL クラスター | 移行対象オブジェクトに対する読み取り権限 |
| PolarDB-X 2.0 インスタンス | 移行対象オブジェクトに対する読み取りおよび書き込み権限 |
アカウントの作成および権限の付与手順については、以下をご参照ください。
PolarDB for MySQL クラスター:「データベースアカウントの作成と管理」
PolarDB-X 2.0 インスタンス:「データベースアカウントの管理」
データ移行タスクの作成
ステップ 1:データ移行ページへ移動
以下のいずれかの方法で、データ移行 ページを開き、データ移行インスタンスが配置されているリージョンを選択します。
DTS コンソール:
DTS コンソール にログインします。
左側のナビゲーションウィンドウで、データ移行 をクリックします。
画面左上隅で、データ移行インスタンスが配置されているリージョンを選択します。
DMS コンソール:
実際の手順は、お使いの DMS コンソールのモードとレイアウトによって異なる場合があります。「シンプルモード」および「DMS コンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。
DMS コンソール にログインします。
トップナビゲーションバーで、ポインターを [Data + AI] > [DTS (DTS)] > [データ移行] 上に移動させます。
データ移行タスク の右側にあるドロップダウンリストから、データ移行インスタンスが配置されているリージョンを選択します。
ステップ 2:ソースおよび宛先データベースの構成
タスクの作成 をクリックして、タスク構成ページへ移動します。
以下のパラメーターを使用して、ソースおよび宛先データベースを構成します。
警告ソースおよび宛先データベースの構成後、ページ上部に表示される 制限事項 を必ずご確認ください。この手順を省略すると、タスクの失敗やデータの不整合が発生する可能性があります。
一般設定
パラメーター 説明 タスク名 DTS タスクの名前です。DTS が自動的に名前を生成しますが、タスクを容易に識別できるよう、意味のある名前を指定することを推奨します。名前は一意である必要はありません。 ソースデータベース
パラメーター 説明 既存の接続を選択 ソースインスタンスが DTS に登録済みの場合は、ドロップダウンリストから選択してください。DTS が残りのパラメーターを自動入力します。DMS コンソールでは、DMS データベースインスタンスの選択 からインスタンスを選択します。登録されていない場合は、以下のパラメーターを手動で構成してください。 データベースタイプ PolarDB for MySQL を選択します。 アクセス方法 Alibaba Cloud インスタンス を選択します。 インスタンスリージョン ソース PolarDB for MySQL クラスターが配置されているリージョンです。 PolarDB インスタンス ID ソース PolarDB for MySQL クラスターの ID です。 データベースアカウント ソースクラスターのアカウントです。「必要な権限」をご参照ください。 データベースパスワード データベースアカウントのパスワードです。 暗号化 接続を暗号化するかどうかを指定します。要件に応じて設定してください。詳細については、「SSL 暗号化の設定」をご参照ください。 宛先データベース
パラメーター 説明 既存の接続を選択 宛先インスタンスが DTS に登録済みの場合は、ドロップダウンリストから選択してください。DTS が残りのパラメーターを自動入力します。DMS コンソールでは、DMS データベースインスタンスの選択 からインスタンスを選択します。登録されていない場合は、以下のパラメーターを手動で構成してください。 データベースタイプ PolarDB-X 2.0 を選択します。 アクセス方法 Alibaba Cloud インスタンス を選択します。 インスタンスリージョン PolarDB-X 2.0 インスタンスが配置されているリージョンです。 インスタンス ID 宛先 PolarDB-X 2.0 インスタンスの ID です。 データベースアカウント 宛先インスタンスのアカウントです。「必要な権限」をご参照ください。 データベースパスワード データベースアカウントのパスワードです。 接続テストと続行 をクリックします。
ソースおよびターゲットデータベースのセキュリティ設定に、DTS サーバーの CIDR ブロックが追加されていることを確認してください。詳細については、「DTS サーバーの CIDR ブロックをセキュリティ設定に追加する」をご参照ください。
ステップ 3:移行オブジェクトの構成
オブジェクトの構成 ページで、以下のパラメーターを構成します。
スキーマ移行 を選択しない場合、事前に宛先データベースでターゲットデータベースおよびテーブルを作成し、選択したオブジェクト でオブジェクト名マッピング機能を有効化してください。増分データ移行 を選択しない場合、データ整合性を維持するため、移行中にソースデータベースへの書き込みを行わないでください。オブジェクト名マッピング機能によるオブジェクト名の変更は、依存オブジェクト(dependent object)の移行失敗を引き起こす可能性があります。
パラメーター 説明 移行タイプ 要件に応じて移行タイプを選択します。- 一度限りの移行を行う場合: スキーマ移行 および 完全なデータ移行 を選択します。- 最小限のダウンタイムで継続的な同期(推奨)を行う場合:スキーマ移行、完全なデータ移行、および 増分データ移行 を選択します。 競合テーブルの処理モード - 事前チェックとエラー報告 (推奨): ターゲットデータベース内のテーブルがソーステーブルと同じ名前であるかをチェックします。競合が存在する場合、事前チェックは失敗します。競合するターゲットテーブルを削除または名前変更できない場合は、オブジェクト名マッピング機能を使用して移行されたテーブルの名前を変更します。詳細については、「オブジェクト名をマッピング」をご参照ください。
エラーを無視して続行: 名前競合の事前チェックをスキップします。注意して使用してください。完全移行中、DTS は既存のターゲットレコードと競合するレコードをスキップします。増分移行中、DTS は競合するターゲットレコードを上書きします。スキーマが異なる場合、特定の列のみが移行されるか、タスクが失敗する可能性があります。ソースオブジェクト ソースオブジェクト セクションからオブジェクトを選択し、右向き矢印(rightwards arrow)アイコンをクリックして、選択したオブジェクト セクションに追加します。選択可能なオブジェクトには、カラム、テーブル、およびスキーマが含まれます。テーブルまたはカラムを選択すると、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトタイプは除外されます。 選択したオブジェクト - 単一オブジェクトの名前を変更するには、オブジェクトを右クリックし、「単一オブジェクトの名前をマップする」をご参照ください。- 複数のオブジェクトの名前を一度に変更するには、[バッチ編集] をクリックし、「複数のオブジェクト名を一度にマップする」をご参照ください。- 行をフィルターするには、オブジェクトを右クリックして WHERE 条件を指定し、「フィルター条件を指定する」をご参照ください。- テーブルに特定の SQL 操作を選択するには、オブジェクトを右クリックして操作を選択します。 次へ:高度な設定 をクリックし、以下のパラメーターを構成します。
複数のタスクが同じソースまたは宛先データベースを共有し、再試行時間の設定が異なる場合、最も最近構成された値が適用されます。再試行期間中も DTS インスタンスの使用量に対して課金されます。ビジネス要件に応じて再試行時間を設定し、移行完了後は速やかに DTS インスタンスをリリースすることを推奨します。
パラメーター 説明 タスクスケジューリング用の専用クラスター デフォルトでは、DTS はタスクを共有クラスターにスケジュールします。より高い安定性が必要な場合は、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。 接続失敗時の再試行時間 タスク開始後に、DTS が接続失敗を再試行する時間です。有効範囲:10~1,440 分。デフォルト:720 分。最低でも 30 分以上に設定してください。この期間内に DTS が再接続できた場合、タスクは再開します。それ以外の場合は、タスクが失敗します。 その他の問題発生時の再試行時間 DTS が失敗した DDL または DML 操作を再試行する時間です。有効範囲:1~1,440 分。デフォルト:10 分。最低でも 10 分以上に設定してください。この値は、接続失敗時の再試行時間 より小さくする必要があります。 完全なデータ移行の負荷制御の有効化 完全移行中の読み取り/書き込み負荷を制限します。有効化した場合、ソースデータベースへのクエリ数(QPS)、完全なデータ移行の RPS、および 完全移行のデータ移行速度(MB/s) を構成します。完全なデータ移行 が選択されている場合にのみ利用可能です。 増分データ移行の負荷制御の有効化 増分移行中の負荷を制限します。有効化した場合、増分データ移行の RPS および 増分移行のデータ移行速度(MB/s) を構成します。増分データ移行 が選択されている場合にのみ利用可能です。 環境タグ DTS インスタンスを識別するための任意のタグです。 転送および逆再生タスクのハートビートテーブルに対する SQL 操作の削除有無 DTS がハートビートテーブル操作をソースデータベースに書き込むかどうかを制御します。はい:ハートビート操作を書き込みません(レイテンシー表示が表示される場合があります)。いいえ:ハートビート操作を書き込みます(ソースデータベースの物理バックアップおよびクローン作成に影響を与える可能性があります)。 ETL の構成 ETL (抽出·変換·書き出し) を有効にするかどうか。 はい: ETL コードエディタが開きます。 詳細については、「データ移行またはデータ同期タスクで ETL を設定する」および「ETL とは」をご参照ください。 いいえ: ETL を無効にします。 モニタリングとアラート タスク失敗またはレイテンシーしきい値に関するアラートを受信するかどうか。はい: アラートのしきい値と通知設定を設定します。「DTS タスクを作成するときにモニタリングとアラートを設定する」を参照してください。いいえ: アラートは発行されません。 「[データ検証]へ進む」をクリックして、データ検証タスクを設定します。詳細については、「データ検証タスクの設定」をご参照ください。
ステップ 4:事前チェックの実行
このタスクの API パラメーターをプレビューするには、次へ:タスク設定の保存と事前チェック の上にポインターを合わせ、OpenAPI パラメーターのプレビュー をクリックします。
次へ:タスク設定の保存と事前チェック をクリックして、設定を保存し、事前チェックを開始します。
DTS は、移行を開始する前に事前チェックを実行します。事前チェックが成功した場合にのみ、タスクが開始されます。
事前チェックが失敗した場合:
失敗した項目の横にある 詳細の表示 をクリックし、原因を確認して問題を修正した後、再び事前チェック をクリックします。
無視可能なアラート項目の場合:アラートの詳細の確認 > 詳細の表示 > 無視 > OK の順にクリックし、その後 再び事前チェック をクリックします。
アラート項目を無視すると、データの不整合やその他のリスクが発生する可能性があります。
ステップ 5:移行インスタンスの購入および起動
成功率 が 100% に達するまで待機し、次へ:インスタンスの購入 をクリックします。
インスタンスの購入 ページで、以下のパラメーターを構成します。
パラメーター 説明 リソースグループ 移行インスタンスのリソースグループです。デフォルト: デフォルトリソースグループResource Management とは インスタンスクラス 移行インスタンスのクラスによって移行速度が決まるため、ワークロードに基づいてクラスを選択してください。詳細については、「データ移行インスタンスのインスタンスクラス」をご参照ください。 Data Transmission Service(従量課金)サービス利用規約 を確認し、チェックボックスをオンにして同意します。
購入および起動 をクリックし、確認ダイアログで OK をクリックします。
移行タスクの監視
タスクを起動した後、データ移行 ページでその進行状況を監視できます。
| 移行構成 | ステータス動作 |
|---|---|
| スキーマ移行および完全なデータ移行のみ | タスクは完了時に自動的に停止します。ステータス 列に 完了 と表示されます。 |
| 増分データ移行を含む | タスクは継続して実行され、自動的に停止しません。ステータス 列に 実行中 と表示されます。 |