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

Data Transmission Service:ApsaraDB RDS for PostgreSQL インスタンスから ApsaraDB RDS for MySQL インスタンスへのデータ同期

最終更新日:Jul 24, 2026

Data Transmission Service (DTS) を使用して、ApsaraDB RDS for PostgreSQL インスタンスから ApsaraDB RDS for MySQL インスタンスにデータを同期できます。

前提条件

課金

同期タイプ

コスト

スキーマ同期と完全データ同期

無料です。

増分データ同期

有料です。 詳細については、「課金の概要」をご参照ください。

サポートされている同期トポロジ

  • 一方向 1 対 1 同期

  • 一方向 1 対多同期

  • 一方向カスケード同期

  • 一方向多対 1 同期

詳細については、「同期トポロジ」をご参照ください。

同期可能な SQL 操作

操作タイプ

SQL 文

データ操作言語 (DML)

INSERT、UPDATE、DELETE

注意事項

外部キーの動作

  • スキーマ同期中、DTS は外部キーをソースデータベースから宛先データベースに同期します。

  • 完全データ同期および増分データ同期中、DTS はセッションレベルで外部キーの制約チェックとカスケード操作を一時的に無効にします。

説明

データ同期中にソースデータベースでカスケード更新および削除操作を実行すると、データの不整合が発生する可能性があります。

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

プライマリキーと一意性制約

同期するテーブルには、PRIMARY KEY または一意性制約が必要で、すべてのフィールドが一意である必要があります。 そうしないと、宛先データベースに重複したデータレコードが含まれる可能性があります。

説明

[同期タイプ] パラメーターで [スキーマ同期] を選択しなかったために宛先テーブルがすでに存在する場合、そのテーブルに、ソーステーブルと同じ PRIMARY KEY または NOT NULL の一意性制約が設定されていることを確認してください。 そうしないと、宛先データベースに重複したデータレコードが含まれる可能性があります。

テーブル数の制限

同期するオブジェクトとしてテーブルを選択し、それらを編集する場合 (宛先データベースでのテーブル名や列名の変更など)、単一のデータ同期タスクは最大 5,000 テーブルまでサポートします。 5,000 を超えるテーブルを同期するには、複数のタスクを設定するか、データベース全体を同期します。

WAL ログの要件

  • wal_level パラメーターを logical に設定します。

  • 増分のみの同期:WAL ログを 24 時間以上保持します。

  • 完全データ同期と増分データ同期:WAL ログを少なくとも 7 日間保持します。 完全データ同期が完了した後、保持期間を 24 時間以上に短縮できます。

警告

保持期間が不十分なために DTS が WAL ログを取得できない場合、タスクが失敗することがあります。 例外的な状況では、データの不整合や損失が発生する可能性があります。 DTS がサービスレベルアグリーメント (SLA) を遵守するためには、これらの保持要件を遵守する必要があります。

ソースデータベースでの操作

  • プライマリ/セカンダリ スイッチオーバー:ソースの ApsaraDB RDS for PostgreSQL インスタンスでプライマリ/セカンダリ スイッチオーバーを実行する前に、[ロジカルレプリケーションスロットのフェイルオーバー]機能を有効にします。 これにより、論理サブスクリプションが中断されるのを防ぎ、データ同期タスクが期待どおりに継続して実行されます。 詳細については、「ロジカルレプリケーションスロットのフェイルオーバー」をご参照ください。

  • 大規模なデータレコード:増分データ変更中にソースデータベースから同期される単一のデータレコードが 256 MB を超えると、実行中のデータ同期インスタンスは失敗し、回復できなくなります。 タスクを再設定する必要があります。

  • DDL の制限:スキーマ同期および完全データ同期中は、データ定義言語 (DDL) 文を実行してデータベースまたはテーブルのスキーマを変更しないでください。 そうしないと、タスクは失敗します。

長時間実行されるトランザクション

増分データ同期の進行中にソースデータベースで長時間実行されるトランザクションがあると、長時間実行されるトランザクションがコミットされる前に生成された WAL ログが蓄積される可能性があります。 これにより、ソースデータベースのディスク容量が枯渇する可能性があります。

メジャーバージョンのアップグレード

データ同期インスタンスの実行中に、ソースデータベースでメジャーバージョンのアップグレードを実行しないでください。 メジャーバージョンのアップグレードによりインスタンスは失敗し、その障害は回復不能です。 タスクを再設定する必要があります。

宛先データベースの要件

4 バイト文字の文字セット

同期するデータに、絵文字や珍しい文字など、4 バイトで表現される文字が含まれている場合、宛先データベースとテーブルは utf8mb4 文字セットを使用する必要があります。

説明

DTS のスキーマ同期機能を使用する場合は、宛先データベースの character_set_server インスタンスパラメーターを utf8mb4 に設定します。

同期の制限

タスクごとに 1 つのデータベース

1 つのデータ同期タスクで同期できるのは、1 つのデータベースからのデータのみです。 複数のデータベースからデータを同期するには、データベースごとに個別のタスクを作成してください。

スキーマ間の継承

DTS は、スキーマ間で継承関係を持つテーブルを同期できません。

スキーマレベル同期での新規または名前変更されたテーブル

スキーマを同期オブジェクトとして選択し、RENAME コマンドを使用してテーブルを新規作成または名前変更する場合は、テーブルにデータを書き込む前に次のステートメントを実行してください:

ALTER TABLE schema.table REPLICA IDENTITY FULL;

schematable は、実際のスキーマとテーブル名に置き換えてください。 これにより、データの一貫性が確保されます。

説明

この操作はオフピーク時に実行してください。 このステートメントの実行時にテーブルをロックしないでください。 そうしないと、デッドロックが発生する可能性があります。

MySQL での列名の大文字と小文字の区別

MySQL データベースの列名では、大文字と小文字は区別されません。 ソースデータベースの複数の列の名前が、大文字と小文字の違いのみである場合、同期中に宛先 MySQL データベースの同じ列に書き込まれます。 これにより、予期しない結果が生じる可能性があります。

ソースデータベース内の DTS 管理オブジェクト

一時テーブル

DTS は、増分 DDL 文、テーブルスキーマ、およびハートビート情報を格納するために、ソースデータベースに以下の一時テーブルを作成します。 データ同期中にこれらのテーブルを削除しないでください。 これらのテーブルは DTS インスタンスがリリースされると自動的に削除されます。

  • public.dts_pg_class

  • public.dts_pg_attribute

  • public.dts_pg_type

  • public.dts_pg_enum

  • public.dts_postgres_heartbeat

  • public.dts_ddl_command

  • public.dts_args_session

説明

これらの一時テーブルを通じて取得された DDL 文は、宛先データベースには書き込まれません。

ハートビートテーブル

DTS は、同期レイテンシを正確に測定するために、dts_postgres_heartbeat という名前のハートビートテーブルをソースデータベースに追加します。

レプリケーションスロット

DTS は、dts_sync_ というプレフィックスが付いたレプリケーションスロットをソースデータベースに作成します。 このスロットは、過去 15 分以内にソースデータベースから増分ログを取得します。

説明

レプリケーションスロットは、DTS インスタンスがリリースされると自動的に削除されます。 ただし、ソースデータベースのパスワードを変更したり、DTS サーバーの CIDR ブロックを IP アドレスホワイトリストから削除したりすると、レプリケーションスロットは自動的に削除できません。 この場合、ログの滞留を防ぐために、手動でレプリケーションスロットを削除してください。

説明

データ同期タスクがリリースされた、または失敗した場合、DTS は自動的にレプリケーションスロットを削除します。 ソースの ApsaraDB RDS for PostgreSQL インスタンスでプライマリ/セカンダリ スイッチオーバーが実行された場合は、セカンダリデータベースにログオンし、手動でレプリケーションスロットを削除してください。

パフォーマンスと操作

パフォーマンスに関する考慮事項

  • 開始前に、データ同期がソースデータベースと宛先データベースに与える影響を評価してください。 可能な場合は、オフピーク時にデータを同期してください。

  • 初回の完全データ同期中、DTS は両方のデータベースの読み取りおよび書き込みリソースを使用するため、サーバーの負荷が増加する可能性があります。

Data Management Service (DMS) を使用したオンライン DDL

DTS のみがテーブルデータを宛先データベースに書き込む場合、Data Management Service (DMS) を使用して、データ同期中にソーステーブルでオンライン DDL 操作を実行できます。 詳細については、「ロックレス変更チケットを使用したロックレススキーマ変更の実行」をご参照ください。

警告

同期中に他のソースからのデータが宛先データベースに書き込まれると、データの不整合が発生します。 他のソースが宛先データベースに書き込んでいる間に DMS を使用してオンライン DDL 文を実行すると、データ損失が発生する可能性があります。

失敗した DDL 文

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

同期後の検証

データ同期が完了した後 (インスタンスの [ステータス][完了] に変わった後)、次のコマンドを実行して、データが宛先テーブルに書き込まれたことを確認してください:

analyze table <Table name>
説明

ソースデータベースで高可用性 (HA) スイッチオーバーがトリガーされた場合、データがメモリにのみ書き込まれ、データ損失が発生する可能性があります。

DTS タスクの障害回復

DTS タスクが失敗した場合、DTS のテクニカルサポートは 8 時間以内にタスクの復元を試みます。 このプロセス中に、タスクが再起動されたり、タスクパラメーターが変更されたりする場合があります。

説明

変更される可能性があるのはタスクパラメーターのみで、データベースパラメーターは変更されません。 変更される可能性のあるパラメーターには、「DTS インスタンスのパラメーターの変更」トピックの「インスタンスパラメーターの変更」セクションに記載されているものが含まれますが、これらに限定されません。

ソース固有の要件

  • ApsaraDB RDS for PostgreSQL ソース:データ同期中に ApsaraDB RDS for PostgreSQL インスタンスのエンドポイントまたはゾーンを変更しないでください。 そうしないと、タスクは失敗します。

  • 自己管理 PostgreSQL ソースmax_wal_sendersmax_replication_slots パラメーターの値は、自己管理 PostgreSQL データベースで使用されているレプリケーションスロットの数と、このデータベース用に作成される DTS インスタンスの数の合計よりも大きい必要があります。

  • Google Cloud SQL for PostgreSQL ソース[データベースアカウント] パラメーターを、cloudsqlsuperuser 権限を持つデータベースアカウントに設定します。 指定されたアカウントが管理を許可されているオブジェクトのみを選択してください。 または、選択したオブジェクトに対する OWNER 権限を指定されたアカウントに付与してください。

    説明

    cloudsqlsuperuser 権限を持つアカウントは、cloudsqlsuperuser 権限を持つ他のアカウントが所有するデータを管理することはできません。

操作手順

  1. 新しい DTS コンソールのデータ同期ページに移動します。

    説明

    または、DMS コンソールにログインします。 上部メニューで、[データ + AI] にポインターを合わせ、[DTS (DTS)] > [データ同期] を選択します。

  2. ページの左上隅で、データ同期インスタンスが存在するリージョンを選択します。

  3. [タスクの作成] をクリックします。 ソースデータベースと宛先データベースを設定します。

    警告

    ソースデータベースと宛先データベースを設定した後、ページに表示される [制限] をお読みください。 これらの制限を守らないと、タスクの失敗やデータの不整合を引き起こす可能性があります。

    説明

    ソースの ApsaraDB RDS for PostgreSQL インスタンスのバージョンが 9.4 で、DML 操作のみを同期する場合、データベースアカウントには REPLICATION 権限のみが必要です。

    タスク設定

    パラメーター

    [タスク名]

    DTS は自動的にタスク名を生成します。 タスクを簡単に識別できるような、わかりやすい名前を指定してください。 一意のタスク名である必要はありません。

    ソースデータベース設定

    パラメーター

    [データベースタイプ]

    [PostgreSQL] を選択します。

    [アクセス方法]

    [Alibaba Cloud インスタンス] を選択します。

    [インスタンスリージョン]

    ソースの ApsaraDB RDS for PostgreSQL インスタンスのリージョンです。

    [インスタンス ID]

    ソースの ApsaraDB RDS for PostgreSQL インスタンスの ID です。

    [データベース名]

    ApsaraDB RDS for PostgreSQL インスタンス内のソースデータベースの名前です。

    [データベースアカウント]

    ソースの ApsaraDB RDS for PostgreSQL インスタンスの権限付きアカウントです。 アカウントはデータベースの所有者である必要があります。 詳細については、「アカウントの作成」および「データベースの作成」をご参照ください。

    [データベースパスワード]

    データベースアカウントのパスワードです。

    [宛先データベース]

    パラメーター

    [データベースタイプ]

    [MySQL] を選択します。

    [アクセス方法]

    [Alibaba Cloud インスタンス] を選択します。

    [インスタンスリージョン]

    宛先の ApsaraDB RDS for MySQL インスタンスのリージョンです。

    [インスタンス ID]

    宛先の ApsaraDB RDS for MySQL インスタンスの ID です。

    [データベースアカウント]

    宛先の ApsaraDB RDS for MySQL インスタンスのデータベースアカウントです。 アカウントには、宛先データベースに対する読み取りおよび書き込み権限が必要です。

    [データベースパスワード]

    データベースアカウントのパスワードです。

    [暗号化]

    ビジネス要件に基づいて、[非暗号化] または [SSL暗号化] を選択します。 [SSL暗号化] を使用するには、DTS タスクを設定する前に、ApsaraDB RDS for MySQL インスタンスで SSL 暗号化を有効にする必要があります。 詳細については、「クラウド証明書を使用して SSL 暗号化を有効にする」をご参照ください。

  4. [接続性のテストと次へ] をクリックします。 ソースまたは宛先データベースが Alibaba Cloud データベースインスタンス (ApsaraDB RDS for MySQL インスタンスや ApsaraDB for MongoDB インスタンスなど) の場合、DTS は自動的に DTS サーバーの CIDR ブロックをインスタンスのホワイトリストに追加します。 ソースまたは宛先データベースが Elastic Compute Service (ECS) インスタンスでホストされている自己管理データベースの場合、DTS は自動的に DTS サーバーの CIDR ブロックを ECS インスタンスのセキュリティグループルールに追加します。この際、ECS インスタンスからデータベースにアクセスできることを確認する必要があります。 データベースが複数の ECS インスタンスにデプロイされている場合は、手動で DTS サーバーの CIDR ブロックを各 ECS インスタンスのセキュリティグループルールに追加します。 ソースまたは宛先データベースがデータセンターにデプロイされているか、サードパーティのクラウドサービスプロバイダーによって提供されている自己管理データベースの場合、手動で DTS サーバーの CIDR ブロックをデータベースのホワイトリストに追加します。 詳細については、「DTS サーバーの CIDR ブロックの追加」トピックの「DTS サーバーの IP アドレスのホワイトリスト登録」セクションをご参照ください。

    警告

    DTS サーバーの CIDR ブロックをデータベースまたはインスタンスのホワイトリスト、あるいは ECS セキュリティグループルールに追加すると、セキュリティリスクが生じる可能性があります。 DTS を使用する前に、潜在的なリスクを理解し、認識してください。 ユーザー名とパスワードのセキュリティ強化、公開ポートの制限、API 呼び出しの認証、ホワイトリストまたは ECS セキュリティグループルールの定期的なレビューによる不正な CIDR ブロックの削除、Express Connect、VPN Gateway、または Smart Access Gateway を介してデータベースを DTS に接続するなど、予防措置を講じてください。

  5. 同期するオブジェクトと詳細設定を構成します。

    説明

    - ソースデータベースと宛先データベースに同じテーブル名が存在し、宛先テーブルを削除または名前変更できない場合は、オブジェクト名マッピング機能を使用します。 詳細については、「オブジェクト名マッピング」をご参照ください。 - [エラーを無視して続行] を選択した場合、ソースデータベースと宛先データベースに、一致するプライマリキーまたは一意キーの値を持つ同じスキーマがあると、完全データ同期中、DTS は競合するレコードを同期せず、宛先に既存のレコードを保持します。 増分データ同期中、DTS は既存のレコードを上書きします。 スキーマが異なる場合、データ初期化が失敗したり、一部の列のみが同期されたり、タスクが失敗したりする可能性があります。

    説明

    - 特定のデータベースまたはテーブルの SQL 操作を選択するには、[選択されたオブジェクト] セクションでオブジェクトを右クリックし、同期する操作を選択します。 サポートされている操作については、「同期可能な SQL 操作」セクションをご参照ください。 - WHERE 条件でデータをフィルタリングするには、[選択されたオブジェクト] セクションでオブジェクトを右クリックし、フィルター条件を指定します。 詳細については、「フィルター条件の設定」をご参照ください。

    説明

    - 同じソースまたは宛先データベースを共有する複数のタスクに異なるリトライ時間範囲を指定した場合、最も短いリトライ時間範囲が優先されます。 - DTS はリトライ期間中もインスタンスに課金します。 ビジネス要件に基づいてリトライ時間を設定してください。 ソースインスタンスと宛先インスタンスがリリースされた後、速やかに DTS インスタンスをリリースしてください。

    基本設定

    パラメーター

    [同期タイプ]

    デフォルトで [増分データ同期] が選択されています。 [完全データ同期] のみを選択することも可能です。 [スキーマ同期] は選択できません。 完全データ同期を選択すると、事前チェックが完了した後、DTS は選択したオブジェクトの履歴データをソースデータベースから宛先データベースに同期します。 この履歴データは、その後の増分同期の基礎となります。

    [競合するテーブルの処理モード]

    [事前チェックしてエラーを報告]:宛先データベースにソースデータベースのテーブルと同じ名前のテーブルが含まれているかどうかをチェックします。 同じテーブル名が存在する場合、事前チェック中にエラーが返され、タスクは開始できません。 [エラーを無視して続行]:同じテーブル名の事前チェックをスキップします。 動作の詳細については、この表の上にある注記をご参照ください。

    [ソースオブジェクト]

    [ソースオブジェクト] セクションから 1 つ以上のオブジェクトを選択し、右矢印アイコンをクリックして [選択されたオブジェクト] セクションに追加します。 同期するオブジェクトとして、列、テーブル、またはデータベースを選択できます。 テーブルまたは列を選択した場合、DTS はビュー、トリガー、ストアドプロシージャなどの他のオブジェクトを同期しません。

    [選択されたオブジェクト]

    宛先インスタンスでオブジェクトの名前を変更するには、[選択されたオブジェクト] で右クリックします。 詳細については、「オブジェクト名マッピング」をご参照ください。 一度に複数のオブジェクトの名前を変更するには、[選択されたオブジェクト] セクションの右上隅にある [一括編集] をクリックします。 詳細については、「オブジェクト名マッピング」をご参照ください。

    詳細設定

    パラメーター

    [監視とアラート]

    タスクのアラートを設定するかどうかを指定します。 タスクが失敗した場合、または同期レイテンシが指定されたしきい値を超えた場合、アラート連絡先に通知が届きます。 アラートを無効にするには [いいえ] を選択し、アラートのしきい値と通知設定を構成するには [はい] を選択します。 詳細については、「監視とアラートの設定」をご参照ください。

    [失敗した接続のリトライ時間]

    タスク開始後にソースまたは宛先データベースに到達できなくなった場合に、DTS が接続を再試行する時間 (分) です。 有効な値:10〜1440。 デフォルト:720。 推奨:30 より大きい値。 この期間内に DTS が再接続すると、タスクは再開されます。 それ以外の場合、タスクは失敗します。

    [ETL の設定]

    抽出、変換、ロード (ETL) を有効にするかどうかを指定します。 データ処理ステートメントをコードエディタに入力するには [はい] を選択し、スキップするには [いいえ] を選択します。 詳細については、「ETL とは?」および「DTS 移行または同期タスクでの ETL の設定」をご参照ください。

  6. タスク設定を保存し、事前チェックを実行します。

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

    • 準備ができたら、[次へ:タスク設定の保存と事前チェック] をクリックします。

    説明

    - DTS は、タスクを開始する前に事前チェックを実行します。 タスクは、事前チェックに合格した後にのみ開始できます。 - 事前チェックが失敗した場合は、失敗した各項目の横にある [詳細の表示] をクリックし、原因を分析し、問題をトラブルシューティングして、事前チェックを再実行してください。 - 事前チェック中にアラートがトリガーされた場合: - アラート項目を無視できない場合は、[詳細の表示] をクリックし、問題をトラブルシューティングして、[再度事前チェック] をクリックしてください。 - アラート項目を無視できる場合は、[アラート詳細の確認] をクリックします。 [詳細の表示] ダイアログボックスで、[無視] をクリックし、[OK] をクリックします。 [再度事前チェック] をクリックして事前チェックを再実行します。 アラート項目を無視すると、データの不整合が発生し、ビジネスに潜在的なリスクが生じる可能性があります。

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

  8. [購入] ページで、データ同期インスタンスの課金方法とインスタンスクラスを設定します。

    セクション

    パラメーター

    [新しいインスタンスクラス]

    課金方法

    [サブスクリプション]:インスタンス作成時に前払いします。 長期利用に適しています。 [従量課金]:時間単位で課金されます。 短期利用に適しています。 不要になったインスタンスをリリースすることで、コストを削減できます。

    リソースグループ設定

    データ同期インスタンスが属するリソースグループです。 デフォルト値:[デフォルトのリソースグループ]。 詳細については、「リソース管理とは?」をご参照ください。

    インスタンスクラス

    同期速度の要件に基づいてインスタンスクラスを選択します。 詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。

    サブスクリプション期間

    [サブスクリプション]課金方法でのみ利用可能です。 オプション:1〜9 か月、1 年、2 年、3 年、または 5 年。

  9. [Data Transmission Service (Pay-as-you-go) サービス規約] を読み、選択してください。

  10. [購入して開始] をクリックします。 確認ダイアログボックスで、[OK] をクリックします。 タスクの進行状況がタスク一覧に表示されます。