Data Transmission Service (DTS) を使用して、PolarDB-X 1.0 インスタンスから PolarDB-X 2.0 インスタンスへデータを移行します。DTS は、スキーマ移行、完全なデータ移行、および増分データ移行をサポートしています。これら 3 種類の移行を組み合わせることで、サービス中断なしで移行中にアプリケーションを実行し続けることができます。
前提条件
開始する前に、以下を確認してください。
ストレージタイプが ApsaraDB RDS for MySQL (カスタムまたは購入済み) である PolarDB-X 1.0 ソースインスタンスがあること。PolarDB for MySQL はストレージタイプとしてサポートされていません。
バージョン 5.2 以降の PolarDB-X 1.0 インスタンスがあること。
データを受信するためにデータベースが作成された宛先 PolarDB-X 2.0 インスタンスがあること。詳細については、「インスタンスの作成」および「データベースの作成」をご参照ください。
送信先インスタンスの利用可能なストレージ容量が、ソースインスタンスの合計データサイズよりも大きいこと。
ソース PolarDB-X 1.0 インスタンスに接続されている ApsaraDB RDS for MySQL インスタンスでバイナリロギングが構成されていること。詳細については、「バイナリロギングの要件」をご参照ください。
制限事項
ソースデータベースの要件
テーブルの要件
移行するテーブルには、すべてのフィールドが一意である PRIMARY KEY または UNIQUE 制約が必要です。これがない場合、送信先に重複レコードが含まれる可能性があります。
DTS は、UNIQUE 制約のみを持つテーブルのスキーマ移行をサポートしていません。移行を開始する前に、これらのテーブルに主キー制約を作成してください。
個々のテーブルを移行オブジェクトとして選択し、テーブルまたはカラムの名前を変更する場合、1 つのタスクで最大 1,000 個のテーブルを移行できます。1,000 個を超えるテーブルを移行するには、複数のタスクに分割するか、データベース全体を移行してください。
バイナリロギングの要件
ソース PolarDB-X 1.0 インスタンスに接続されている ApsaraDB RDS for MySQL インスタンスでバイナリロギングを有効にする必要があります。以下のパラメーターを確認してください。詳細については、「インスタンスのパラメーターの表示」をご参照ください。
| パラメーター | 必須値 | 注記 |
|---|---|---|
| バイナリロギング | 有効 | 有効になっていない場合、事前チェックが失敗し、移行タスクを開始できません。 |
binlog_row_image | full | 「full」に設定されていない場合、事前チェックが失敗し、移行タスクを開始できません。 |
| バイナリログ保持 (増分移行のみ) | 24 時間以上 | 増分移行のみを開始する前に、これを設定してください。 |
| バイナリログ保持 (完全移行 + 増分移行) | 少なくとも 7 日間 | 保持期間が短い場合、DTS はバイナリログを取得できず、タスクが失敗する可能性があります。完全移行が完了した後、これを 24 時間以上に短縮できます。 |
移行中の制限事項
移行タスクの実行中は、以下の操作を避けてください。
ソースインスタンスの容量のスケーリング
頻繁にアクセスされるテーブルの移行またはシャードの変更
DDL 操作の実行 (これらは移行タスクの失敗やデータの不整合を引き起こす可能性があります)
ソース PolarDB-X 1.0 インスタンスのネットワークタイプの切り替え (切り替える必要がある場合は、後で移行接続設定を更新してください)
完全移行のみ中のソースデータベースへのデータ書き込み (データ整合性を維持するために、スキーマ移行 + 完全なデータ移行 + 増分データ移行を使用してください)
考慮事項
データ分散: DTS が PolarDB-X 1.0 インスタンスからデータを移行する際、データはアタッチされた ApsaraDB RDS for MySQL インスタンス全体に分散されます。DTS は各インスタンスに対してサブタスクを実行します。サブタスクのステータスは、パフォーマンス監視 ページで監視できます。
外部キー: スキーマ移行中、DTS は外部キーをソースから送信先に移行します。完全移行および増分移行中、DTS はセッションレベルで外部キーに対する制約チェックとカスケード操作を一時的に無効にします。移行中にソースでカスケード更新および削除操作が行われると、データの不整合が発生する可能性があります。
XA トランザクション: DTS は、PolarDB-X 1.0 の XA トランザクションの継続性に基づいて、増分移行のデータ整合性を保証します。XA トランザクションの継続性が中断された場合 (例えば、ディザスタリカバリシナリオなど)、未コミットの XA トランザクションが失われ、データの不整合が発生する可能性があります。
FLOAT および DOUBLE の精度: DTS は、FLOAT および DOUBLE カラムに対して
ROUND(COLUMN, PRECISION)関数を使用します。精度が指定されていない場合、DTS は FLOAT にはデフォルトで 38 桁、DOUBLE には 308 桁を使用します。これらのデフォルト値が要件を満たしていることを確認してください。表領域の断片化: 完全移行中の同時 INSERT 操作は、送信先でテーブルの断片化を引き起こします。完全移行後、送信先の使用済み表領域はソースのそれよりも大きくなります。
パフォーマンスへの影響: 完全なデータ移行は、ソースデータベースとターゲットデータベースの両方で読み書きリソースを使用します。データベースサーバーへの負荷を軽減するために、オフピーク時間中に移行を実行してください。
タスクの再開: DTS は、失敗した移行タスクを最大 7 日間自動的に再開しようとします。ワークロードを送信先に切り替える前に、移行タスクを停止またはリリースするか、ターゲットデータベース上の DTS アカウントから書き込み権限を取り消してください。そうしないと、再開されたタスクが宛先データをソースデータで上書きする可能性があります。
タスク障害からの回復: DTS タスクが失敗した場合、DTS サポートは 8 時間以内に回復を試みます。タスクは再起動され、回復中にタスクパラメーター (データベースパラメーターではない) が変更される場合があります。
課金
| 移行タイプ | インスタンス料金 | インターネットトラフィック料金 |
|---|---|---|
| スキーマ移行および完全なデータ移行 | 無料 | アクセス方法 が パブリック IP アドレス に設定されている場合に課金されます。「課金概要」をご参照ください。 |
| 増分データ移行 | 課金対象です。「課金概要」をご参照ください。 | — |
移行タイプ
| タイプ | DTS が移行するもの |
|---|---|
| スキーマ移行 | 選択されたオブジェクトのスキーマをソースから送信先に移行します。 |
| 完全なデータ移行 | ソースから送信先への選択されたオブジェクトの履歴データ |
| 増分データ移行 | 完全移行の完了後、ソース アプリケーション サービスを中断することなくデータ変更が可能です。 |
増分データ移行中にサポートされる SQL 操作
| 操作タイプ | サポートされるステートメント |
|---|---|
| DML | INSERT, UPDATE, DELETE |
必要な権限
| データベース | スキーマ移行 | 完全なデータ移行 | 増分データ移行 | 付与方法 |
|---|---|---|---|---|
| PolarDB-X 1.0 | SELECT | SELECT | SELECT, REPLICATION SLAVE, REPLICATION CLIENT (DTS がこれらを自動的に付与します) | アカウントの管理 |
| PolarDB-X 2.0 | 読み書き | 読み書き | 読み書き | — |
移行タスクの作成
ステップ 1: データ移行ページへの移動
DTS コンソールまたは DMS コンソールのいずれかを使用します。
DTS コンソール
DTS コンソールにログインします。DTS コンソール
左側のナビゲーションウィンドウで、[データ移行] をクリックします。
左上隅で、データ移行インスタンスが存在するリージョンを選択します。
DMS コンソール
手順は、ご利用の DMS コンソールモードとレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルをカスタマイズ」をご参照ください。
DMS コンソールにログインします。
トップナビゲーションバーで、ポインターを [Data + AI] > [DTS (DTS)] > [データ移行] に合わせます。
**[データ移行タスク]** の右側にあるドロップダウンリストから、データ移行インスタンスが存在するリージョンを選択します。
ステップ 2: ソースデータベースとターゲットデータベースの構成
[タスクの作成] をクリックし、以下のパラメーターを設定します。
| セクション | パラメーター | 値 |
|---|---|---|
| — | タスク名 | 説明的な名前を入力します。DTS が自動的に生成するため、一意である必要はありません。 |
| ソースデータベース | データベースタイプ | PolarDB-X 1.0 |
| アクセス方法 | Alibaba Cloud インスタンス | |
| インスタンスリージョン | ソース PolarDB-X 1.0 インスタンスのリージョン | |
| Alibaba Cloud アカウント間でのデータレプリケーション | いいえ(同一アカウント移行) | |
| インスタンス ID | ソース PolarDB-X 1.0 インスタンスの ID | |
| データベースアカウント | ソース PolarDB-X 1.0 インスタンスのアカウント | |
| データベースパスワード | ソースアカウントのパスワード | |
| ターゲットデータベース | データベースタイプ | PolarDB-X 2.0 |
| アクセス方法 | Alibaba Cloud インスタンス | |
| インスタンスリージョン | 宛先 PolarDB-X 2.0 インスタンスのリージョン | |
| インスタンス ID | 宛先 PolarDB-X 2.0 インスタンスの ID | |
| データベースアカウント | 宛先 PolarDB-X 2.0 インスタンスのアカウント | |
| データベースパスワード | 宛先アカウントのパスワード |
[接続性のテストと続行] をクリックします。
DTS サーバーの CIDR ブロックが、ソースデータベースとターゲットデータベースの両方のセキュリティ設定に追加されていることを確認してください。詳細については、「DTS サーバーの CIDR ブロックを追加」をご参照ください。
ステップ 3: 移行するオブジェクトの選択
「[Configure Objects]」ページで、以下のパラメーターを設定します。
| パラメーター | 説明 |
|---|---|
| 同期タイプ | 実行する移行タイプを選択します。 説明 **[スキーマ移行]** をスキップする場合、ターゲットデータベースとテーブルを手動で作成し、**[選択されたオブジェクト]** でオブジェクト名マッピングを有効にしてください。**[増分データ移行]** をスキップする場合、移行中にソースデータベースに書き込まないでください。 |
| 競合テーブルの処理モード | • **[事前チェックとエラー報告]**: ソースと送信先に同一名のテーブルがある場合、事前チェックが失敗します。送信先で競合するテーブルを削除または名前変更できない場合は、オブジェクト名マッピングを使用して名前を変更してください。 警告 **[エラーを無視して続行]** を選択すると、データの不整合が発生する可能性があります。完全移行中、DTS は重複するプライマリキーを持つレコードをスキップします (既存の宛先レコードを保持します)。増分移行中、DTS はそれらを上書きします。スキーマが異なる場合、一部のカラムのみが移行されるか、タスクが失敗する可能性があります。 |
| 宛先インスタンスにおけるオブジェクト名の大文字小文字表記 | 送信先でのデータベース、テーブル、およびカラム名の大文字小文字を制御します。デフォルト: **[DTS デフォルトポリシー]**。詳細については、「オブジェクト名の大文字小文字を指定」をご参照ください。 |
| ソース オブジェクト | 移行するオブジェクトを選択し、矢印アイコンをクリックして **[選択されたオブジェクト]** に追加します。 説明 データベース全体ではなく、個々のテーブルを選択してください。データベース全体を移行する場合、DTS は CREATE TABLE または DROP TABLE の変更を送信先にレプリケートしません。 |
| [選択オブジェクト] | 単一のオブジェクトを右クリックして名前を変更するか、**[一括編集]** をクリックして複数のオブジェクトの名前を一括で変更します。詳細については、「オブジェクト名マッピング」をご参照ください。 説明 オブジェクトの名前を変更すると、依存オブジェクトの移行が失敗する可能性があります。 |
ステップ 4: 詳細設定の構成
「[次へ: 詳細設定]」をクリックし、その後、以下のパラメーターを設定します。
| パラメーター | 説明 |
|---|---|
| タスクスケジューリング用専用クラスター | デフォルトでは、DTS はタスクを共有クラスターにスケジュールします。移行の安定性を向上させるには、専用クラスターをご購入ください。詳細については、「DTS 専用クラスターとは」をご参照ください。 |
| 接続失敗時の再試行時間 | DTS が接続失敗後に再試行する時間を設定します。有効値:10~1,440 分。デフォルト値:720 分。この値は少なくとも 30 分以上に設定してください。この時間枠内に DTS が再接続できれば移行が再開されますが、それ以外の場合はタスクが失敗します。<br><br> 説明 複数のタスクで同じソースまたは送信先を共有している場合、最も最近設定された再試行時間が優先されます。DTS は再試行中もインスタンスに対して課金されます。 |
| その他の問題発生時の再試行時間 | DDL または DML 操作の失敗後に DTS が再試行する時間を設定します。有効値:1~1,440 分。デフォルト値:10 分。この値は少なくとも 10 分以上に設定してください。また、この値は接続失敗時の再試行時間より小さくする必要があります。 |
| 完全データ移行時のスロットリングを有効化 | 完全移行中の読み取りおよび書き込み負荷を制限します。ソースデータベースへの QPS (1 秒あたりのクエリ数)、完全データ移行の RPS、および完全移行時のデータ移行速度 (MB/s) を設定できます。完全データ移行が選択されている場合のみ利用可能です。 |
| 増分データ移行時のスロットリングを有効化 | 増分移行中の負荷を制限します。増分データ移行の RPS および増分移行時のデータ移行速度 (MB/s) を設定できます。増分データ移行が選択されている場合のみ利用可能です。 |
| 環境タグ | 移行インスタンスを識別するためのオプションのタグです。 |
| ETL の設定 | 抽出・変換・書き出し (ETL) 機能を有効化します。[はい] を選択して、データ処理文を入力します。詳細については、「データ移行またはデータ同期タスクでの ETL の設定」および「ETL とは」をご参照ください。 |
| モニタリングとアラート | [はい] を選択すると、タスクが失敗した場合や移行遅延がしきい値を超えた場合にアラートを受け取れます。アラートのしきい値および通知設定を構成します。詳細については、「モニタリングとアラートの設定」をご参照ください。 |
ステップ 5: 事前チェックの実行
[次へ: タスク設定の保存と事前チェック] をクリックします。
この構成の API パラメーターをプレビューするには、続行する前に、ボタンにマウスを合わせて、[OpenAPI パラメーターのプレビュー] をクリックしてください。
DTS は移行を開始する前に事前チェックを実行します。タスクは事前チェックが成功した後にのみ開始されます。
いずれかの事前チェック項目が失敗した場合は、その項目の横にある[詳細の表示]をクリックします。問題を修正してから、[再度事前チェック]をクリックします。
事前チェック項目で無視できるアラートがトリガーされた場合は、[アラート詳細を確認] をクリックします。ダイアログで [無視] > [OK] の順にクリックし、次に [再事前チェック] をクリックします。アラートを無視すると、データの不整合が発生する可能性があります。
ステップ 6: インスタンスの購入と移行の開始
成功率 が 100% になったら、[次へ:インスタンスの購入] をクリックします。
[Purchase Instance] ページで、以下のパラメーターを設定します。
セクション パラメーター 説明 新しいインスタンスクラス リソースグループ データ移行インスタンスのリソースグループ。デフォルト: **[デフォルトのリソースグループ]**。詳細については、「Resource Management とは」をご参照ください。 インスタンスクラス 移行速度を決定します。要件に基づいて選択してください。詳細については、「データ移行インスタンスのインスタンスクラス」をご参照ください。 Data Transmission Service (従量課金) サービス規約を読み、同意します。
[購入して開始] をクリックし、次に [OK] をクリックします。
移行ステータスの確認
タスクが開始された後は、[データ移行] ページでその進行状況を確認できます。
| 移行タイプ | 予想されるステータス |
|---|---|
| スキーマ移行 + 完全なデータ移行のみ | 完了 — 完了するとタスクは自動的に停止します。 |
| 増分データ移行を含む | 実行中 — 増分移行は継続的に実行され、自動的に停止しません。 |
次のステップ
送信先の PolarDB-X 2.0 インスタンスにアプリケーションを切り替える前に:
移行タスクが再開されて宛先データが上書きされるのを防ぐため、移行タスクを停止またはリリースしてください。あるいは、ターゲットデータベース上の DTS アカウントから書き込み権限を取り消してください。