すべてのプロダクト
Search
ドキュメントセンター

Data Transmission Service:自己管理 TiDB データベースから ApsaraDB RDS for MySQL インスタンスへのデータ移行

最終更新日:Mar 29, 2026

このトピックでは、Data Transmission Service (DTS) を使用して、自己管理 TiDB データベースから ApsaraDB RDS for MySQL インスタンスへデータを移行する方法について説明します。

移行パスを選択してください:

パス手順使用タイミング
完全移行のみ前提条件 → 手順短時間のメンテナンスウィンドウで実施する一括移行
完全移行 + 増分移行前提条件 → 事前準備 → 手順ゼロダウンタイム移行;移行中もソースデータベースを稼働状態に維持
重要

プライマリキーまたは一意制約(UNIQUE constraint)が設定されていないテーブルは、ターゲットデータベースに重複レコードを生成する可能性があります。移行を開始する前に、対象となるすべてのテーブルに PRIMARY KEY または UNIQUE 制約が設定されていることを確認してください。

前提条件

開始前に、以下の条件を満たしていることを確認してください。

  • ソース TiDB データベースの合計データサイズよりも大きな空きストレージ容量を持つ ApsaraDB RDS for MySQL インスタンス。詳細については、「ApsaraDB RDS for MySQL インスタンスの作成」をご参照ください。

  • (完全移行 + 増分移行の場合のみ)増分データのキャプチャのために Kafka クラスターをセットアップし、TiDB Binlog または TiCDC を構成するための「事前準備」セクションを完了しています。

事前準備(増分移行のみ)

完全なデータ移行のみを実施する場合は、このセクションをスキップしてください。

DTS は、Kafka を基盤とするパイプライン経由で TiDB の増分データを読み取ります。DTS は Kafka トピックのパーティション 0 のみから読み取るため、該当トピックにはパーティションが 1 つだけ存在する必要があります。DTS タスクを作成する前に、以下のいずれかの方法でこのパイプラインをセットアップしてください。

方法 1:TiDB Binlog

ネットワーク遅延を最小限に抑えるため、ソースデータベースサーバー、Pump、Drainer、および Kafka クラスターを同一の内部ネットワーク上にデプロイしてください。
  1. 以下のいずれかのオプションを使用して Kafka クラスターを準備します。

    • 自己管理 Kafka クラスター:「Apache Kafka ドキュメント」を参照してください。ブローカー側で message.max.bytes および replica.fetch.max.bytes を、コンシューマー側で fetch.message.max.bytes を、TiDB のバイナリログ量を処理できる十分な値に設定してください。構成の詳細については、「CONFIGURATION」をご参照ください。

    • ApsaraMQ for Kafka インスタンス:「Getting started overview」を参照してください。ソースデータベースサーバーと同じ VPC 上にインスタンスをデプロイしてください。

  2. Kafka クラスターまたは ApsaraMQ for Kafka インスタンス内にトピックを作成します。

    重要

    トピックにはパーティションが 1 つだけ存在する必要があります。DTS は ID が 0 のパーティションからのみ増分データを読み取ります。

  3. Pump および Drainer をデプロイします。詳細については、「TiDB Binlog クラスターデプロイ」をご参照ください。

  4. Drainer の設定ファイルを編集し、Kafka クラスターを指すように設定します。詳細については、「Binlog コンシューマークライアント ユーザーガイド」をご参照ください。

    TiDB データベースサーバーが Kafka クラスターに接続できることを確認してください。
  5. DTS サーバーの CIDR ブロックを TiDB データベースのホワイトリストに追加します。詳細については、「DTS サーバーの CIDR ブロックの追加」をご参照ください。

方法 2:TiCDC

  1. 以下のいずれかのオプションを使用して Kafka クラスターを準備します。

    • 自己管理 Kafka クラスター:「Apache Kafka ドキュメント」を参照してください。ブローカー側で message.max.bytes および replica.fetch.max.bytes を、コンシューマー側で fetch.message.max.bytes を、TiDB のバイナリログ量を処理できる十分な値に設定してください。構成の詳細については、「CONFIGURATION」をご参照ください。

    • ApsaraMQ for Kafka インスタンス:「Getting started overview」を参照してください。ソースデータベースサーバーと同じ VPC 上にインスタンスをデプロイしてください。

  2. Kafka クラスターまたは ApsaraMQ for Kafka インスタンス内にトピックを作成します。

    重要

    トピックにはパーティションが 1 つだけ存在する必要があります。DTS は ID が 0 のパーティションからのみ増分データを読み取ります。

  3. TiCDC をインストールします。TiUP を使用して、TiDB クラスターに新しい TiCDC ノードを追加するか、既存の TiCDC ノードをスケールアウトすることを推奨します。詳細については、「TiCDC のデプロイと保守」をご参照ください。

  4. ソース TiDB データベースの増分データを Kafka にレプリケートします。最初のコマンドラインで tiup cdc cli changefeed create \ を使用することを推奨します。詳細については、「Kafka へのデータレプリケーション」をご参照ください。

    TiDB データベースサーバーが Kafka クラスターに接続できることを確認してください。

必要な権限

データベース必要な権限
TiDB データベース移行対象オブジェクトに対する SELECT 権限および SHOW VIEW 権限
ApsaraDB RDS for MySQL インスタンスターゲットデータベースに対する読み取りおよび書き込み権限

アカウントの作成および構成に関するヘルプについては、「アカウントの作成」および「アカウント権限の変更」をご参照ください。

課金

移行タイプインスタンス構成料金インターネットトラフィック料金
スキーマ移行 + 完全なデータ移行無料アクセス方法パブリック IP アドレス に設定した場合に課金されます。「課金概要」をご参照ください。
増分データ移行課金されます。「課金概要」をご参照ください。

増分移行でサポートされる SQL 操作

操作タイプSQL ステートメント
DMLINSERT、UPDATE、DELETE
DDLCREATE TABLE、DROP TABLE、ALTER TABLE、RENAME TABLE、TRUNCATE TABLE、CREATE VIEW、DROP VIEW、ALTER VIEW

注意事項

ソースデータベースの制限事項:

  • ソースデータベースサーバーには十分なアウトバウンド帯域幅が必要です。帯域幅が不足すると、移行速度が低下します。

  • テーブルには、すべてのフィールドが一意である PRIMARY KEY または一意制約(UNIQUE constraint)が必要です。これらの制約がないテーブルは、ターゲットデータベースで重複レコードを発生させる可能性があります。

  • テーブル名またはカラム名の変更を伴う移行では、単一タスクで最大 1,000 個のテーブルをサポートします。1,000 個を超えるテーブルを移行する場合は、複数のタスクをバッチ処理で実行するか、データベースレベルでの移行を実施してください。

  • 増分データ移行には、TiDB Binlog または TiCDC を構成した Kafka クラスターが必要です(「事前準備」を参照)。

完全なデータ移行:

  • CPU 負荷が両方のデータベースで 30 % 未満のオフピーク時に移行を実行してください。完全移行中は、DTS が両方のデータベースの読み取りおよび書き込みリソースを使用します。

  • 完全移行中に並列で INSERT 操作を実行すると、ターゲットのテーブルが断片化されます。移行完了後、ターゲットの表領域はソースより大きくなる可能性があります。

  • 移行中に他のソースからターゲットへデータを書き込まないでください。これにより、データの不整合が発生する可能性があります。

増分データ移行:

  • タスクを作成した後は、速やかにソースデータベースで操作を実行するか、テストデータを挿入してください。これにより、オフセット情報が更新され、過度な遅延によるタスク失敗を防止できます。

  • DTS は Kafka トピックのパーティション 0 のみから増分データを読み取ります。

データ型および文字セットに関する考慮事項:

  • 稀少な文字や絵文字(4 バイト文字)を含むデータを移行する場合、ターゲットテーブルは UTF8mb4 文字セットを使用する必要があります。スキーマ移行機能を使用する場合は、ターゲットデータベースの character_set_server パラメーターを UTF8mb4 に設定してください。

  • MySQL のカラム名は大文字小文字を区別しません。大文字小文字のみが異なるカラム名を同一のターゲットテーブルに書き込むと、予期しない結果が発生する可能性があります。

  • DTS は FLOAT および DOUBLE 値を取得するために ROUND(COLUMN, PRECISION) を使用します。デフォルト精度:FLOAT = 38 桁、DOUBLE = 308 桁。これらの精度設定が要件を満たすことを確認してください。

移行後の手順:

  • タスクの ステータス完了 と表示されたら、ANALYZE TABLE <table_name> を実行して、データがディスクに書き込まれていることを確認してください。ターゲット MySQL データベースにおける HA スイッチオーバーにより、データがメモリ上にのみ存在し、データ損失を引き起こす可能性があります。

  • DTS は失敗したタスクを最大 7 日間再開しようと試みます。ワークロードをターゲットデータベースに切り替える前に、失敗したタスクを停止またはリリースするか、REVOKE を実行して DTS のターゲットへの書き込み権限を削除してください。そうしないと、再開されたタスクがターゲットデータをソースデータで上書きする可能性があります。

  • ターゲットで失敗した DDL ステートメントは、DTS タスクを停止しません。失敗した DDL ステートメントはタスクログで確認できます。「タスクログの表示」をご参照ください。

  • DTS タスクが失敗した場合、DTS サポートが 8 時間以内に復旧を試みます。復旧中、タスクが再起動され、タスクパラメーター(データベースパラメーターではない)が変更される場合があります。変更可能なパラメーターについては、「インスタンスパラメーターの変更」をご参照ください。

  • ソースデータベース名が ApsaraDB RDS for MySQL の命名規則に準拠していない場合、まずターゲットデータベースを作成し、タスク設定時にオブジェクト名マッピング機能を使用して名前を変更してください。「データベースの管理」および「オブジェクト名のマッピング」をご参照ください。

移行タスクの設定および実行

ステップ 1:データ移行ページへ移動

以下のいずれかのコンソールを使用します。

DTS コンソール:

  1. DTS コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、データ移行 をクリックします。

  3. 画面左上隅で、移行インスタンスが配置されているリージョンを選択します。

Data Management Service (DMS) コンソール:

実際の手順は、DMS コンソールのモードおよびレイアウトによって異なります。「シンプルモード」および「DMS コンソールのレイアウトおよびスタイルのカスタマイズ」をご参照ください。
  1. DMS コンソール にログインします。

  2. 上部のナビゲーションバーで、Data + AI > DTS (DTS) > データ移行 の順に移動します。

  3. データ移行タスク の横にあるドロップダウンリストから、移行インスタンスが配置されているリージョンを選択します。

ステップ 2:タスクの作成およびソース/ターゲットデータベースの設定

  1. タスクの作成 をクリックします。

  2. 以下のパラメーターを使用して、ソースおよびターゲットデータベースを設定します。

タスク設定:

パラメーター説明
タスク名DTS タスクの名前。DTS が自動的に名前を生成しますが、タスクを容易に識別できるよう、意味のある名前を指定することを推奨します。名前は一意である必要はありません。

ソースデータベース:

パラメーター説明
既存の接続を選択TiDB インスタンスが DTS に登録済みの場合は、一覧から選択すると、DTS が接続パラメーターを自動的に設定します。登録されていない場合は、以下のパラメーターを手動で設定してください。DMS コンソールでは、DMS データベースインスタンスの選択 一覧を使用します。
データベースタイプTiDB を選択します。
アクセス方法TiDB のデプロイ先に基づいてアクセス方法を選択します。この例では Self-managed Database on ECS を使用します。その他のアクセス方法の場合は、まず必要な環境設定を完了してください。「事前準備の概要」をご参照ください。
インスタンスのリージョンTiDB データベースが配置されているリージョン。
ECS インスタンス IDTiDB データベースをホストする ECS インスタンスの ID。
ポート番号TiDB サービスポート。デフォルト: 4000
データベースアカウントTiDB アカウント。必要な権限については、「必要な権限」をご参照ください。
データベースパスワードTiDB アカウントのパスワード。
増分データの移行増分データ移行を有効にする場合は はい を選択し、「Kafka クラスターのパラメーター」セクションで Kafka クラスター情報を入力します。完全移行のみの場合は いいえ を選択します。

ターゲットデータベース:

パラメーター説明
既存の接続を選択RDS インスタンスが DTS に登録済みの場合は、一覧から選択します。登録されていない場合は、以下のパラメーターを手動で設定してください。DMS コンソールでは、DMS データベースインスタンスの選択 一覧を使用します。
データベースタイプMySQL を選択します。
アクセス方法Alibaba Cloud Instance を選択します。
インスタンスリージョンターゲットの ApsaraDB RDS for MySQL インスタンスが配置されているリージョン。
Alibaba Cloud アカウント間でのデータ複製同一アカウント間の移行の場合は いいえ を選択します。
RDS インスタンス IDターゲットの ApsaraDB RDS for MySQL インスタンスの ID。
データベースアカウントターゲットデータベースのアカウント。必要な権限については、「必要な権限」をご参照ください。
データベースパスワードターゲットデータベースアカウントのパスワード。
暗号化非暗号化 または SSL 暗号化 を選択します。SSL 暗号化を使用する場合は、タスク設定前に RDS インスタンスで SSL 暗号化を有効化してください。「クラウド証明書を使用した SSL 暗号化の有効化」をご参照ください。

ステップ 3:接続性のテスト

ページ下部で、接続性のテストと続行 をクリックし、DTS サーバーの CIDR ブロック ダイアログボックスで 接続性のテスト をクリックします。

DTS サーバーの CIDR ブロックは、ソースおよびターゲットデータベースのセキュリティ設定に(自動または手動で)追加する必要があります。「DTS サーバーの CIDR ブロックの追加」をご参照ください。

ステップ 4:移行対象オブジェクトの設定

オブジェクトの設定 ページで、以下のパラメーターを設定します。

パラメーター説明
移行タイプ選択した移行パスに基づいて移行タイプを選択します。- スキーマ移行 + 完全なデータ移行:完全移行のみ。- スキーマ移行 + 完全なデータ移行 + 増分データ移行:ゼロダウンタイム移行のための完全移行 + 増分移行。
説明

スキーマ移行 をスキップする場合は、タスク開始前にターゲットデータベースおよびテーブルを作成し、選択済みオブジェクト でオブジェクト名マッピングを有効化してください。増分データ移行 をスキップする場合は、データ整合性を保つため、移行中にソースデータベースへの書き込みを停止してください。

競合するテーブルの処理モード事前チェックおよびエラー報告(推奨):ソースおよびターゲットに同名のテーブルが存在する場合、事前チェックが失敗します。競合するテーブルの名前を変更するには、オブジェクト名マッピングを使用してください。「オブジェクト名のマッピング」をご参照ください。エラーを無視して続行:同名のテーブルに対する事前チェックをスキップします。注意して使用してください。これにより、データの不整合が発生する可能性があります。完全移行中は、ターゲットに既存のレコードが保持されます。増分移行中は、既存のレコードが上書きされます。スキーマが異なる場合、特定のカラムのみが移行されるか、タスクが失敗する可能性があります。
ターゲットインスタンスにおけるオブジェクト名の大文字小文字の処理ターゲットにおけるデータベース名、テーブル名、カラム名の大文字小文字の処理を制御します。DTS のデフォルトポリシー がデフォルトで選択されています。「ターゲットインスタンスにおけるオブジェクト名の大文字小文字の指定」をご参照ください。
ソースオブジェクトソースオブジェクト セクションからテーブルまたはデータベースを選択し、向右小箭头 をクリックして 選択済みオブジェクト に追加します。
選択済みオブジェクト- 単一オブジェクトの名前を変更するには、選択済みオブジェクト 内で右クリックします。「単一オブジェクトの名前のマッピング」をご参照ください。- 複数のオブジェクトを一度に名前変更するには、一括編集 をクリックします。「複数のオブジェクト名を一度にマッピング」をご参照ください。- 行をフィルターするには、テーブルを右クリックし、「フィルター条件の指定」を行います。
説明

オブジェクトの名前を変更すると、それらに依存する他のオブジェクトが破損する可能性があります。

ステップ 5:高度な設定の構成

次へ:高度な設定 をクリックし、以下のパラメーターを設定します。

パラメーター説明
失敗した接続の再試行時間タスク開始後に失敗した接続を DTS が再試行する時間です。有効範囲:10~1,440 分。デフォルト:720 分。最低でも 30 分以上に設定してください。この期間内に再接続が成功すればタスクは再開されますが、失敗した場合はタスクが終了します。
説明

複数のタスクが同一のソースまたはターゲットデータベースを共有する場合、最も最近設定された再試行時間がすべてのタスクに適用されます。再試行中は、インスタンス使用料金が課金されます。

その他の問題の再試行時間失敗した DDL または DML 操作を DTS が再試行する時間です。有効範囲:1~1,440 分。デフォルト:10 分。最低でも 10 分以上に設定してください。この値は 失敗した接続の再試行時間 より小さくする必要があります。
完全なデータ移行のスロットリングの有効化完全移行中のリソース使用量を制限し、データベースへの負荷を軽減します。ソースデータベースへのクエリ数(QPS)完全データ移行の RPS完全移行のデータ移行速度(MB/s) を構成します。完全なデータ移行 が選択されている場合にのみ利用可能です。
増分データ移行のスロットリングの有効化増分移行中のリソース使用量を制限します。増分データ移行の RPS および 増分移行のデータ移行速度(MB/s) を構成します。増分データ移行 が選択されている場合にのみ利用可能です。
環境タグDTS インスタンスを識別するための任意のタグです。
ETL の構成抽出・変換・書き出し(ETL)機能を有効化して、移行中にデータを変換します。はい を選択し、コードエディタに処理ステートメントを入力します。「ETL とは」および「ETL の構成」をご参照ください。
モニタリングとアラートタスク失敗または移行遅延がしきい値を超えた場合のアラートを設定します。はい を選択し、アラートのしきい値および通知設定を構成します。「モニタリングおよびアラートの設定」をご参照ください。

ステップ 6:データ検証の構成(任意)

次のステップ:データ検証 をクリックして、データ検証タスクを設定します。詳細については、「データ検証タスクの構成」をご参照ください。

ステップ 7:設定の保存および事前チェックの実行

  • このタスクをプログラムで構成するための API パラメーターをプレビューするには、次へ:タスク設定の保存および事前チェック の上にカーソルを合わせて、OpenAPI パラメーターのプレビュー をクリックします。

  • 続行するには、次へ:タスク設定の保存および事前チェック をクリックします。

移行開始前に DTS が事前チェックを実行します。事前チェックが通過するまで、タスクは開始できません。
事前チェックが失敗した場合は、失敗項目の横にある 詳細の表示 をクリックし、問題を解決してから 再チェック をクリックしてください。
事前チェックのアラートについて:無視できないアラートの場合は、問題を修正して再チェックを実行してください。無視できるアラートの場合は、アラートの詳細の確認 をクリックし、その後 無視OK再チェック の順にクリックしてください。アラートを無視すると、データの不整合が発生する可能性があります。

ステップ 8:インスタンスの購入および移行の開始

  1. 成功率100 % に達したら、次へ:インスタンスの購入 をクリックします。

  2. インスタンスの購入 ページで、以下のパラメーターを設定します。

    パラメーター説明
    リソースグループ移行インスタンスのリソースグループ。デフォルト: デフォルト リソースグループ。「Resource Management とは?
    インスタンスクラス移行速度はインスタンスクラスに依存します。「データ移行インスタンスのインスタンスクラス」を参照して、ワークロードに適したクラスを選択してください。
  3. Data Transmission Service (従量課金) サービス利用規約 を確認し、チェックボックスをオンにして同意してください。

  4. 購入および開始 をクリックし、確認ダイアログで OK をクリックします。

データ移行 ページでタスクを監視します。

  • 完全移行のみ:タスクは完了時に自動的に停止します。ステータス完了 と表示されます。

  • 完全移行 + 増分移行:タスクは継続して実行されます。ステータス実行中 と表示されます。

Kafka クラスターのパラメーター

増分データの移行はい に設定した場合、ソースデータベースセクションで Kafka クラスターを構成します。

パラメーター説明
Kafka クラスタータイプKafka クラスターのデプロイ場所。この例では Self-managed Database on ECS を使用します。Express Connect、VPN Gateway、または Smart Access Gateway を選択した場合は、接続済み VPC から VPC を選択し、ドメイン名または IP を指定してください。
Kafka データソースコンポーネント事前準備」で使用した方法に基づいて選択します:TiDB データベースのデフォルト binlog 形式を使用します。(TiDB Binlog)または TiCDC Canal-JSON 形式を使用します。(TiCDC)。
ECS インスタンス IDKafka クラスターをホストする ECS インスタンスの ID。
ポート番号Kafka サービスポート。
Kafka クラスターのアカウントKafka ユーザー名。認証が有効でない場合は空白のままにしてください。
Kafka クラスターのパスワードKafka パスワード。認証が有効でない場合は空白のままにしてください。
Kafka バージョンKafka のバージョン。バージョンが 1.0 以降の場合は、1.0 を選択します。
暗号化セキュリティ要件に応じて、非暗号化 または SCRAM-SHA-256 を選択します。
トピック増分データを受信するトピック。トピックにはパーティションが 1 つだけ存在する必要があります。

次のステップ

移行タスクのステータスが 完了 と表示された場合、または増分移行の遅延がゼロになった場合、アプリケーションをターゲットデータベースに切り替えます。

  1. ソース TiDB データベースへの書き込みを停止します。

  2. 増分移行の遅延がゼロになり、タスクが残りの変更をすべて処理するのを待ちます。

  3. アプリケーションの接続文字列を、ApsaraDB RDS for MySQL インスタンスを指すように更新します。

  4. データ整合性を確認するために、重要なテーブルに対して ANALYZE TABLE <table_name> を実行します。

  5. DTS 移行タスクを停止またはリリースします。