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

Data Transmission Service:RDS MySQL インスタンス間のデータ移行

最終更新日:Mar 29, 2026

Data Transmission Service (DTS) を使用すると、ダウンタイムを最小限に抑えながら、ApsaraDB RDS for MySQL インスタンス間でデータを移行できます。DTS は、スキーマ移行、完全データ移行、増分データ移行の 3 つの移行タイプをサポートしており、これらを組み合わせることで、プロセス全体を通じてソースデータベースの稼働を継続できます。

移行タイプの選択

ダウンタイムの許容度に基づいて移行タイプを選択します。

目標選択する移行タイプ
1 回限りのオフライン移行 (ソースデータベースを停止可能)スキーマ移行 + 完全データ移行
ゼロダウンタイム移行 (ソースデータベースは稼働を継続)スキーマ移行 + 完全データ移行 + 増分データ移行
増分データ移行をスキップする場合、データの一貫性を保つために、移行中はソースデータベースにデータを書き込まないでください。

各移行タイプの機能

  • スキーマ移行:テーブル、ビュー、トリガー、ストアドプロシージャ、ストアドファンクションのスキーマを移行します。DTS は、ビュー、ストアドプロシージャ、ストアドファンクションの SECURITY 属性を DEFINER から INVOKER に変更し、ユーザーアカウントは移行しません。スキーマ移行中に、DTS はソースデータベースからターゲットデータベースに外部キーも移行します。

  • 完全データ移行:ソースデータベースの選択したオブジェクトから、既存のすべてのデータを移行します。

  • 増分データ移行:完全データ移行が完了した後、ソースデータベースからの変更を継続的にレプリケートします。これにより、ターゲットデータベースのデータが追いつく間、アプリケーションはソースデータベースに対して実行を続けることができます。

サポートされるソースデータベースとターゲットデータベース

ソースデータベースとターゲットデータベースは、いずれも以下のいずれかになります。

  • ApsaraDB RDS for MySQL インスタンス

  • セルフマネージド MySQL データベース:

    • パブリック IP アドレスを持つデータベース

    • Elastic Compute Service (ECS) でホストされているデータベース

    • Express Connect、VPN Gateway、または Smart Access Gateway (SAG) 経由で接続されたデータベース

    • データベースゲートウェイ経由で接続されたデータベース

前提条件

開始する前に、以下を確認してください。

  • ソースとターゲットの ApsaraDB RDS for MySQL インスタンスが作成されていること。詳細については、「ApsaraDB RDS for MySQL インスタンスの作成」をご参照ください。

  • ターゲットインスタンスの利用可能なストレージがソースインスタンスよりも大きいこと

  • ソースインスタンスとターゲットインスタンスの MySQL バージョンが一致していること

制限事項

ソースデータベースの要件

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

  • 移行するテーブルには PRIMARY KEY または UNIQUE 制約が必要で、すべてのフィールドが一意である必要があります。これらがない場合、ターゲットデータベースに重複したレコードが含まれる可能性があります。

  • 移行オブジェクトとして個別のテーブルを選択し、ターゲットでテーブル名や列名を変更する場合、1 つのタスクでサポートされるテーブルは最大 1,000 個です。1,000 個を超えるテーブルを移行する場合は、複数のタスクを設定するか、データベース全体を移行してください。

  • DTS は、完全データ移行および増分データ移行中に、セッションレベルで外部キー制約のチェックとカスケード操作を一時的に無効にします。データの不整合を引き起こす可能性があるため、移行中にソースデータベースで CASCADE または DELETE 操作を実行しないでください。

  • スキーマ移行および完全データ移行中は、データベースまたはテーブルスキーマを変更する DDL 文を実行しないでください。実行するとタスクが失敗します。

増分データ移行のためのバイナリログ要件

増分データ移行タスクを開始する前に、ソースデータベースで以下のバイナリログ設定を構成してください。

パラメーター必須の値理由
バイナリログ有効DTS はバイナリログから変更を読み取ります
binlog_formatROWDTS が完全な行レベルの変更をキャプチャできるようにするため
binlog_row_imageFULLDTS がすべての列の値をキャプチャできるようにするため
log_slave_updatesONデュアルプライマリクラスター内のセルフマネージド MySQL でのみ必須。DTS がすべてのバイナリログにアクセスできるようにするため
バイナリログの保持期間7 日以上ログが消費される前にパージされると、DTS が失敗し、データ損失が発生する可能性があるため
重要

バイナリログの要件が満たされていない場合、事前チェックは失敗し、タスクを開始できません。例外的なケースでは、ログの欠落がデータ損失を引き起こす可能性があります。

その他の制限事項

  • 移行はオフピーク時に実行してください。完全データ移行は両方のデータベースの読み取りおよび書き込みリソースを使用するため、サーバーの負荷が増加します。

  • 完全データ移行後、同時 INSERT 操作による断片化のため、ターゲットの表領域はソースよりも大きくなります。

  • DTS は ROUND(COLUMN, PRECISION) を使用して FLOAT および DOUBLE 型の列を読み取ります。デフォルトの精度は FLOAT で 38 桁、DOUBLE で 308 桁です。これらが要件と一致していることを確認してください。

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

  • ターゲットデータベースで DDL 文が失敗した場合、タスクは実行を継続します。失敗した DDL 文を確認するには、タスクログを確認してください。詳細については、「タスクログの表示」をご参照ください。

  • MySQL の列名は大文字と小文字を区別しないため、同じターゲットテーブル内で大文字と小文字のみが異なる列名があると、予期しない結果が生じる可能性があります。

  • ソースの ApsaraDB RDS for MySQL インスタンスで EncDB 機能が有効になっている場合、完全データ移行はサポートされません。

特殊なケース

シナリオ制限事項
セルフマネージド MySQL ソースタスク中にプライマリ/セカンダリ スイッチオーバーが発生すると、タスクは失敗します
セルフマネージド MySQL — 移行遅延遅延は、最後に移行されたレコードのタイムスタンプと現在のソースのタイムスタンプを比較して計算されます。ソースで長期間 DML 操作が実行されない場合、遅延の読み取り値が不正確になることがあります。ソースで DML 操作を実行して遅延を更新してください。データベース全体を移行する場合は、1 秒ごとに更新されるハートビートテーブルを作成します。
セルフマネージド MySQL — バイナリログの位置DTS はソースで定期的に CREATE DATABASE IF NOT EXISTS \`test\` を実行して、バイナリログの位置を進めます
ApsaraDB RDS for MySQL V5.6 読み取り専用ソース読み取り専用の V5.6 インスタンスはトランザクションログを記録しないため、増分データ移行のソースとして使用できません
ターゲットデータベースの命名DTS はターゲットインスタンスにデータベースを自動的に作成します。ソースデータベース名が ApsaraDB RDS for MySQL の命名規則に準拠していない場合は、タスクを設定する前にターゲットに手動でデータベースを作成してください。詳細については、「データベースの管理」をご参照ください。

課金

移行タイプインスタンス構成料金インターネットトラフィック料金
スキーマ移行 + フルデータ移行無料Alibaba Cloud からインターネット経由で移行する場合にのみ課金されます。詳細については、「課金概要」をご参照ください。
増分データ移行課金されます。詳細については、「課金概要」をご参照ください。

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

タイプサポートされる操作
DMLINSERT、UPDATE、DELETE
DDLALTER TABLE、ALTER VIEW、CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW、DROP INDEX、DROP TABLE、RENAME TABLE、TRUNCATE TABLE
重要

RENAME TABLE 操作はデータの不整合を引き起こす可能性があります。移行対象としてテーブルを選択し、そのテーブルが移行中に名前変更された場合、そのデータはターゲットに移行されません。これを避けるには、移行オブジェクトとして個々のテーブルではなくデータベースを選択し、RENAME TABLE 操作の前後でテーブルが属するデータベースが両方とも移行オブジェクトに含まれていることを確認してください。

必要な権限

データベーススキーマ移行完全データ移行増分データ移行
ソース ApsaraDB RDS for MySQLSELECTSELECT読み取りおよび書き込み
ターゲット ApsaraDB RDS for MySQL読み取りおよび書き込み読み取りおよび書き込み読み取りおよび書き込み

ソースアカウントが ApsaraDB RDS for MySQL コンソール経由で作成されていない場合は、手動で次の MySQL 権限を付与してください:REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW、SELECT。

ソースデータベースからアカウント情報を移行するには、追加の権限が必要です。詳細については、「データベースアカウントの移行」をご参照ください。

データベースアカウントの作成と設定方法については、「アカウントの作成」および「アカウント権限の変更」をご参照ください。

移行タスクの設定と実行

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

  1. Data Management (DMS) コンソールにログインします。

  2. 上部のナビゲーションバーで、[DTS] にポインターを合わせ、DTS (DTS) > データ移行 を選択します。

    また、新しい DTS コンソールのデータ移行ページに直接アクセスすることもできます。ナビゲーションは、DMS コンソールのモードおよびレイアウトによって異なる場合があります。「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
  3. [データ移行タスク] の右側にあるドロップダウンリストから、移行インスタンスが存在するリージョンを選択します。

    新しい DTS コンソールでは、左上隅でリージョンを選択します。

ステップ 2: タスクの作成と設定

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

  2. 任意:右上隅にある [新しい設定ページ] をクリックして、最新の設定 UI に切り替えます。

    ページに [前のバージョンに戻る] ボタンが表示されている場合は、このステップをスキップしてください。すでに新しいページにいます。
  3. 以下のパラメーターを使用して、ソースデータベースとターゲットデータベースを設定します。

    警告

    ソースデータベースとターゲットデータベースを設定した後、先に進む前にページ上部に表示される [使用制限] セクションをお読みください。これをスキップすると、タスクの失敗やデータの不整合を引き起こす可能性があります。

    ソースデータベース

    パラメーター説明
    タスク名タスクのわかりやすい名前。DTS は自動的にデフォルトの名前を割り当てます。名前は一意である必要はありません。
    DMS データベースインスタンスの選択この例ではスキップします。以下でデータベース情報を手動で設定します。
    データベースタイプMySQL を選択します。
    アクセス方法Alibaba Cloud インスタンス を選択します。
    インスタンスリージョンソースの ApsaraDB RDS for MySQL インスタンスが存在するリージョン。
    Alibaba Cloud アカウント間でのデータレプリケーション同一アカウントでの移行の場合は [いいえ] を選択します。Alibaba Cloud アカウント間で移行する場合は、[はい]アラート通知設定を選択します。詳細については、「Alibaba Cloud アカウント間での DTS タスクの設定」をご参照ください。
    RDS インスタンス IDソースインスタンスの ID。ソースインスタンスとターゲットインスタンスは同じでもかまいません。これにより、単一インスタンス内でデータを移行できます。
    データベースアカウントソースインスタンスのアカウント。詳細については、「必要な権限」をご参照ください。
    データベースパスワードデータベースアカウントのパスワード。
    暗号化[暗号化なし] または [SSL 暗号化] を選択します。[SSL 暗号化] を選択した場合は、まずソースインスタンスで SSL を有効化してください。詳細については、「SSL 暗号化機能の設定」をご参照ください。

    宛先データベース

    パラメーター説明
    DMS データベースインスタンスの選択この例ではスキップします。データベース情報は後ほど手動で設定します。
    データベースタイプ[MySQL] を選択します。
    アクセス方法[Alibaba Cloud インスタンス] を選択します。
    インスタンスリージョン宛先の ApsaraDB RDS for MySQL インスタンスが配置されているリージョンです。
    Alibaba Cloud アカウント間でのデータ複製同一アカウント内の移行の場合は、[いいえ] を選択します。
    RDS インスタンス ID宛先インスタンスの ID です。
    データベースアカウント宛先インスタンスのアカウントです。詳細については、「必要な権限」をご参照ください。
    データベースパスワードデータベースアカウントのパスワードです。
    暗号化[非暗号化] または [SSL 暗号化] を選択します。[SSL 暗号化]SSL 暗号化機能の設定 を選択する場合は、まず宛先インスタンスで SSL を有効にする必要があります。詳細については、「」をご参照ください。
  4. [接続性のテストと続行]」をクリックします。DTS は、自動的にそのサーバーの CIDR ブロックを Alibaba Cloud データベースインスタンスの IP アドレスホワイトリストおよび ECS でホストされるデータベースのセキュリティグループルールに追加します。自己管理データベースが複数の ECS インスタンスでホストされている場合、各 ECS インスタンスのセキュリティグループルールに DTS サーバーの CIDR ブロックを手動で追加する必要があります。自社のデータセンターまたはサードパーティのクラウドプロバイダーでホストされる自己管理データベースの場合は、データベースホワイトリストに DTS サーバーの CIDR ブロックを手動で追加します。詳細については、「DTS サーバーの CIDR ブロックをオンプレミスデータベースのセキュリティ設定に追加する」をご参照ください。

    警告

    DTS の CIDR ブロックをホワイトリストやセキュリティグループに追加すると、潜在的なセキュリティリスクが生じます。パスワードセキュリティの強化、公開ポートの制限、API 呼び出しの認証、ホワイトリストルールの定期的な監査などの予防措置を講じてください。データベースをパブリックインターネット経由で公開する代わりに、Express Connect、VPN Gateway、または Smart Access Gateway を使用してデータベースを DTS に接続することを検討してください。

ステップ 3: オブジェクトの選択と詳細設定

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

    パラメーター説明
    移行タイプダウンタイム要件に基づいて移行タイプを選択します。詳細については、「移行タイプの選択」をご参照ください。
    ソースデータベースのトリガーの移行方法ソースからトリガーを移行する方法。[スキーマ移行][増分データ移行] の両方が選択されている場合にのみ利用可能です。詳細については、「ソースデータベースからのトリガーの同期または移行」をご参照ください。
    移行評価の有効化ソースとターゲットのスキーマ (インデックス長、ストアドプロシージャ、依存テーブルを含む) が移行要件を満たしているかを確認します。[スキーマ移行] が選択されている場合にのみ利用可能です。評価結果は事前チェックをブロックしません。
    競合するテーブルの処理モード[事前チェックしてエラーを報告]オブジェクト名マッピング (デフォルト):ターゲットにソーステーブルと同じ名前のテーブルが含まれている場合、事前チェックは失敗します。開始する前に、を使用して競合するオブジェクトの名前を変更してください。[エラーを無視して続行]:チェックをスキップして続行します。プライマリキーが一致するレコードは移行されず、スキーマの違いにより部分的な移行やタスクの失敗が発生する可能性があります。
    ターゲットインスタンスのオブジェクト名の大文字/小文字送信先におけるデータベース名、テーブル名、およびカラム名の大文字と小文字の扱いを制御します。デフォルトは [DTS デフォルトポリシー] です。詳細については、「オブジェクト名の大文字と小文字の区別を指定する」をご参照ください。
    ソースオブジェクト移行するデータベース、テーブル、または列を選択し、向右小箭头 をクリックして [選択したオブジェクト] に追加します。テーブルまたは列のみを選択すると、ビュー、トリガー、ストアドプロシージャは除外されます。
    選択したオブジェクトオブジェクトを右クリックして、名前を変更するか、行をフィルターするための WHERE 条件を設定します。[一括編集] をクリックして、複数のオブジェクトを一度に名前を変更します。「オブジェクト名のマップ」および「フィルター条件の設定」をご参照ください。オブジェクトの名前を変更すると、依存オブジェクトが移行に失敗する場合があります。
  2. [次へ: 詳細設定] をクリックし、以下のパラメーターを設定します。

    パラメーター説明
    タスクスケジューリング用の専用クラスターデフォルトでは、DTS は共有クラスターを使用します。タスクの安定性を向上させるには、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。
    ソーステーブルに生成されるオンライン DDL ツールの一時テーブルをターゲットデータベースにコピーします。オンライン DDL 操作 (DMS または gh-ost のみ。pt-online-schema-change はサポートされておらず、タスクの失敗を引き起こします) からの一時テーブルを DTS がどのように処理するかを制御します。[はい]:一時テーブルを移行します。大規模な操作では遅延が発生する可能性があります。[いいえ、DMS オンライン DDL に適応]:一時テーブルをスキップし、最終的な DDL のみを移行します。ターゲットのテーブルがロックされる可能性があります。[いいえ、gh-ost に適応]:一時テーブルをスキップし、最終的な DDL のみを移行します。シャドウテーブルをフィルターするためのカスタム正規表現をサポートします。ターゲットのテーブルがロックされる可能性があります。
    アカウントを移行するかどうかソースデータベースのアカウント情報を移行するには [はい] を選択します。移行するアカウントを選択し、ソースとターゲットのアカウント権限が十分であることを確認する必要があります。
    接続失敗時の再試行時間接続失敗後に DTS が再試行する時間。範囲:10~1,440 分。デフォルト:720 分。30 分以上に設定してください。この時間内に DTS が再接続するとタスクは自動的に再開されますが、それ以外の場合はタスクは失敗します。
    その他の問題での再試行時間DDL または DML の失敗後に DTS が再試行する時間。範囲:1~1,440 分。デフォルト:10 分。10 分以上に設定してください。[接続失敗時の再試行時間] より短くする必要があります。
    完全データ移行のスロットリングを有効にするソースへの QPS、RPS、および帯域幅上限を設定することで、完全データ移行中のリソース使用量を制限します。[完全データ移行] が選択されている場合にのみ利用可能です。
    増分データ移行のスロットリングを有効にするRPS と帯域幅上限を設定することで、増分データ移行中のリソース使用量を制限します。[増分データ移行] が選択されている場合にのみ利用可能です。
    環境タグDTS インスタンスの環境を識別するためのオプションのタグ。
    順方向および逆方向タスクのハートビートテーブルに対する SQL 操作を削除するかどうか[はい]:DTS はハートビート操作をソースデータベースに書き込みません。移行遅延が表示される場合があります。[いいえ]:DTS はハートビート操作をソースに書き込みます。これは、ソースデータベースの物理バックアップとクローニングに影響を与える可能性があります。
    ETL の設定はい[はい] を選択して、コードエディタを使用して抽出・変換・書き出し (ETL) ルールを設定します。詳細については、「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。
    モニタリングとアラートタスクが失敗した場合、または移行遅延がしきい値を超えた場合に通知を受信するには、[はい] を選択します。 詳細については、「モニタリングとアラートの設定」をご参照ください。
  3. [次へ: 検証構成]」をクリックして、データ検証を設定します。詳細については、「データ検証タスクの設定」をご参照ください。

ステップ 4: 事前チェックの実行

[次へ: タスク設定を保存して事前チェック] をクリックします。

プログラムによる設定のために API パラメーターをプレビューするには、[次へ: タスク設定を保存して事前チェック] にポインターを合わせ、[OpenAPI パラメーターのプレビュー] をクリックします。

DTS はタスクを開始する前に事前チェックを実行します。いずれかの項目が失敗した場合:

  1. 失敗した項目の横にある [詳細の表示] をクリックします。

  2. チェック結果に基づいて問題を解決します。

  3. [再度事前チェック] をクリックします。

項目がアラートを生成し、それを無視したい場合は、[アラート詳細の確認] をクリックし、ダイアログボックスで [無視] をクリックしてから、[再度事前チェック] をクリックします。アラートを無視すると、データの不整合につながる可能性があります。

ステップ 5: 移行インスタンスの購入とタスクの開始

  1. 事前チェックの成功率が 100% に達するまで待ってから、[次へ: インスタンスの購入] をクリックします。

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

    項目説明
    [リソースグループの設定項目]データ移行インスタンスのリソースグループです。デフォルト: [デフォルトのリソースグループ]。詳細については、「Resource Management とは
    [インスタンスクラス]インスタンスクラスは移行速度を決定します。データ量と時間要件に基づいて選択してください。詳細については、「データ移行インスタンスのインスタンスクラス」をご参照ください。
  3. [Data Transmission Service (従量課金) サービス規約] チェックボックスを選択します。

  4. [購入して開始] をクリックします。タスクがタスクリストに表示され、進捗状況を追跡できます。

移行後

移行タスクの進捗が 100% に達したら (または増分移行の遅延がほぼゼロになったら)、ワークロードをターゲットデータベースに切り替える前に、以下の手順を完了してください。

  1. データの検証:ターゲットデータベースで ANALYZE TABLE <table_name> を実行して、データが正しく書き込まれたことを確認します。これは、ソースでの高可用性 (HA) スイッチオーバー後、データがメモリにのみ書き込まれた可能性がある場合に特に重要です。

  2. ソースへの書き込み停止:すべてのアプリケーションの書き込みトラフィックをソースデータベースからリダイレクトします。

  3. 増分移行の完了を待つ:増分データ移行を実行している場合は、遅延がゼロになるまで待ちます。

  4. 移行タスクの停止またはリリース:切り替え前に、タスクを停止またはリリースするか、REVOKE を実行して DTS のターゲットへの書き込み権限を削除します。これにより、再開された失敗タスクがターゲットのデータを上書きするのを防ぎます。

  5. 権限とアカウントの復元:DTS がビュー、ストアドプロシージャ、またはストアドファンクションの SECURITY 属性を変更した場合 (DEFINER から INVOKER へ)、INVOKER に必要な読み取りおよび書き込み権限を付与します。アカウントを移行しなかった場合は、ターゲットでアプリケーションアカウントを再作成します。

  6. アプリケーションの切り替え:接続文字列を更新して、ターゲットデータベースを指すようにします。

次のステップ