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

Data Transmission Service:MySQL の ApsaraDB RDS インスタンスから MaxCompute プロジェクトへのデータ同期

最終更新日:Mar 28, 2026

Data Transmission Service (DTS) を使用して、ApsaraDB RDS for MySQL インスタンスのデータを MaxCompute プロジェクトに継続的に同期します。DTS はスキーマ複製、既存データのロード、変更データキャプチャ(CDC)を含む全パイプラインを自動で処理するため、ユーザーがパイプラインを自ら管理することなく、リアルタイム分析システムを構築できます。

実施内容

  1. 前提条件(MaxCompute プロジェクト、IP アドレスホワイトリスト、AccessKey)を準備します。

  2. DTS でソースおよびターゲットデータベースの接続を設定します。

  3. 同期対象オブジェクトを選択し、同期オプションを設定します。

  4. 事前チェックを実行した後、インスタンスを購入・起動します。

課金

同期タイプ料金
スキーマ同期および完全なデータ同期無料
増分データ同期課金概要有料です。詳細については、「」をご参照ください。

前提条件

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

ルートアカウントの AccessKey の代わりに、RAM ユーザーを作成するおよびMaxCompute プロジェクトのスーパー管理者として設定することができます。

仕組み

DTS によるデータ同期は、以下の 3 つの順次フェーズで実行されます。

  1. スキーマ同期 — DTS はソースデータベースのテーブルスキーマを MaxCompute に複製し、各テーブル名の末尾に _base を付加します。たとえば、ソーステーブル customer は、MaxCompute 上では customer_base となります。

  2. 完全なデータ同期 — DTS はソースからすべての既存データを _base テーブル(*全量ベースラインテーブル*)にロードします。このスナップショットが、増分同期の起点となります。

  3. 増分データ同期 — DTS は同期対象の各テーブルに対応する _log テーブル(例: customer_log)を作成し、ソースのバイナリログから変更イベントを継続的に書き込みます。

_log テーブルのスキーマについては、「増分データテーブルのスキーマ」をご参照ください。

増分同期でサポートされる SQL 操作

操作タイプステートメント
DMLINSERT、UPDATE、DELETE
DDLADD COLUMN(属性列を含む ADD COLUMN はサポートされません)
DTS は外部キーを同期しません。ソース側でのカスケード操作および削除操作は、ターゲット側には反映されません。

必要な権限

ソースの ApsaraDB RDS for MySQL インスタンスに接続するデータベースアカウントには、読み取りおよび書き込み権限が必要です。詳細については、「アカウントの作成」および「アカウント権限の変更」をご参照ください。

アカウントが ApsaraDB RDS for MySQL コンソール上で作成されていない場合、以下の権限を明示的に付与してください:REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW、SELECT。

制限事項

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

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

  • カラム名またはテーブル名の変更を伴うテーブルを同期する場合、1 つのタスクで最大 1,000 個のテーブル までサポートされます。1,000 個を超えるテーブルを同期するタスクを実行すると、リクエストエラーが発生します。その場合は、複数のタスクを使用するか、データベース単位での同期を実行してください。

  • スキーマ同期および完全なデータ同期中に DDL ステートメントを実行しないでください。実行すると、タスクが失敗します。

  • カスケード操作や物理バックアップの復元によって生成されたデータは同期されません。

  • ソースが MySQL 8.0.23 以降を実行しており、テーブルに不可視カラム(invisible column)が含まれている場合、これらのカラムは除外され、データ損失が発生します。タスク開始前に、ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE; を実行してカラムを可視化してください。プライマリキーを持たないテーブルには自動的に不可視のプライマリキーが付与されるため、それらも可視化する必要があります。「不可視カラム」および「生成された不可視プライマリキー」をご参照ください。

バイナリログの要件

タスクを作成する前に、以下の MySQL パラメーターを設定してください。

パラメーター必須値適用対象
binlog_row_imagefullApsaraDB RDS for MySQL および自己管理 MySQL
binlog_formatrow自己管理 MySQL のみ
log_slave_updatesONデュアルプライマリクラスター内の自己管理 MySQL

バイナリログの保持期間に関する要件:

  • ApsaraDB RDS for MySQL:最低 3 日間、推奨は 7 日間。

  • セルフマネージド MySQL: バイナリログを最低7日間保持する。

DTS による読み取りの前にバイナリログが消去されると、タスクは失敗し、データの不整合や損失が発生する可能性があります。保持期間の設定方法については、「バイナリログファイルの削除」をご参照ください。

重要

自己管理 MySQL データベースでは、バイナリロギングを明示的に有効にする必要があります。デュアルプライマリクラスター内の自己管理 MySQL データベースでは、log_slave_updatesON に設定することで、DTS がすべてのバイナリログを読み取れることを保証します。詳細については、「自己管理 MySQL データベース用のアカウントを作成してバイナリロギングを設定する」をご参照ください。

その他の制限事項

  • 非ピーク時間帯に同期を実行してください。完全なデータ同期では、ソースおよびターゲット両方の読み取り・書き込みリソースが使用されるため、サーバー負荷が増加します。

  • 完全なデータ同期完了後、同時 INSERT 操作による断片化(fragmentation)の影響で、ターゲットの表領域(tablespace)がソースよりも大きくなります。

  • タスク実行中に、同期対象オブジェクトに対して pt-online-schema-change などのオンライン DDL ツールを実行しないでください。タスクが失敗します。

  • 同期中に、他のソースからターゲットへデータを書き込むと、データの不整合が発生する可能性があります。

  • ソースで EncDB が有効になっている場合、完全なデータ同期はサポートされません。透過的データ暗号化(TDE)にはこの制限はなく、TDE インスタンスではスキーマ同期、完全なデータ同期、および増分同期がすべてサポートされます。

  • DTS タスクが失敗した場合、DTS テクニカルサポートが 8 時間以内に復旧を試みます。この期間中、タスクを再起動したり、タスクパラメーター(データベースパラメーターではない)を変更したりできます。

自己管理 MySQL の特殊ケース

  • タスク実行中にプライマリ/セカンダリ スイッチオーバーが発生すると、タスクが失敗します。

  • 同期遅延(latency)は、ターゲット側で最新に同期されたデータのタイムスタンプと、現在のソース側タイムスタンプとの差分で算出されます。ソース側で長期間 DML 操作が実行されない場合、表示される遅延値が不正確になることがあります。遅延値を更新するには、ソース側で任意の DML 操作を実行してください。データベース全体を同期する場合は、1 秒ごとに更新されるハートビートテーブルを作成することを推奨します。

  • DTS は定期的にソース側で CREATE DATABASE IF NOT EXISTS 'test' を実行し、バイナリログの位置を進めます。

ApsaraDB RDS for MySQL の特殊ケース

  • トランザクションログを記録しない、読み取り専用の ApsaraDB RDS for MySQL 5.6 インスタンスは、ソースとして使用できません。

  • DTS は定期的にソース側で CREATE DATABASE IF NOT EXISTS 'test' を実行し、バイナリログの位置を進めます。

データ同期タスクの作成

ステップ 1:データ同期ページを開く

いずれかのコンソールを使用して、タスク設定ページを開きます。

DTS コンソール

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

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

  3. 左上隅で、同期インスタンスを配置するリージョンを選択します。

DMS コンソール

正確なナビゲーションパスは、ご使用の DMS コンソールのモードとレイアウトによって異なります。 詳細については、「シンプルモード」と「DMS コンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。
  1. DMS コンソール にログインします。

  2. 上部のナビゲーションバーで、Data + AI の上にポインターを合わせ、DTS (DTS)データ同期 を選択します。

  3. データ同期タスク の右側にあるドロップダウンリストから、リージョンを選択します。

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

タスクの作成 をクリックし、以下のパラメーターを設定します。

セクションパラメーター説明
該当なしタスク名タスクの名前です。DTS が自動的に生成します。識別しやすいように、意味のある名前を指定してください(一意性は不要です)。
ソースデータベース登録済み接続の選択登録済みのデータベースインスタンスを選択すると、パラメーターが自動的に入力されます。手動で接続を設定することもできます。
データベースタイプ MySQL を選択します。
アクセス方法 Alibaba Cloud インスタンス を選択します。
インスタンスリージョンソースの ApsaraDB RDS for MySQL インスタンスのリージョンです。
Alibaba Cloud アカウント間でのデータ複製 いいえ を選択します(同一アカウント内での同期)。
RDS インスタンス IDソースインスタンスの ID です。
データベースアカウント必要な権限を持つアカウントです。「必要な権限」をご参照ください。
データベースパスワードデータベースアカウントのパスワードです。
暗号化[暗号化なし] または [SSL 暗号化] を選択します。SSL を使用する場合は、まず RDS インスタンスで SSL 暗号化を有効化してください。詳細については、「クラウド証明書を使用して SSL 暗号化を有効化する」をご参照ください。
ターゲットデータベース登録済み接続の選択登録済みのインスタンスを選択するか、手動で設定します。
データベースタイプ MaxCompute を選択します。
アクセス方法 Alibaba Cloud インスタンス を選択します。
インスタンスリージョンMaxCompute プロジェクトのリージョンです。
プロジェクトターゲットとなる MaxCompute プロジェクトの名称です。
Alibaba Cloud アカウントの AccessKey IDMaxCompute プロジェクトを所有するアカウントの AccessKey ID です。
Alibaba Cloud アカウントの AccessKey Secretアカウントの AccessKey Secret です。

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

ページ下部の 接続性のテストと続行 をクリックします。

DTS は、両方のデータベースへのアクセスが必要です。自己管理データベースに接続する場合、DTS の CIDR ブロックをそのセキュリティ設定に追加する必要があります。詳細については、「DTS サーバーの CIDR ブロックをオンプレミスデータベースのセキュリティ設定に追加する」をご参照ください。Alibaba Cloud インスタンスによるアクセスを使用しない自己管理データベースの場合、[接続テスト][DTS サーバーの CIDR ブロック] ダイアログでクリックします。

MaxCompute アカウントへの権限付与を承認するために OK をクリックし、その後 接続性のテストと続行 をクリックします。

ステップ 4:オブジェクトの設定

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

パラメーター説明
同期タイプ スキーマ同期完全なデータ同期、および 増分データ同期 を選択します。完全なデータ同期は、増分同期開始前に既存データをロードします。
追加カラムの命名規則DTS はターゲットテーブルにメタデータカラムを追加します。これらが既存のカラム名と衝突すると、タスクが失敗します。設定に応じて 新規ルール または 従来のルール を選択してください。続行前に、衝突がないか確認してください。「追加カラムの命名規則」をご参照ください。
増分データテーブルのパーティション定義要件に応じてパーティション名を選択します。「パーティション」をご参照ください。
競合テーブルの処理モード事前チェックとエラー報告(デフォルト):ターゲットにソースと同じ名前のテーブルが存在する場合、事前チェックが失敗します。エラーを無視して続行:このチェックをスキップします。注意して使用してください。スキーマが異なる場合、一部のカラムのみが同期されるか、タスクが失敗する可能性があります。スキーマが一致し、レコードのプライマリキーまたは一意キーが同じ場合、完全同期では既存のターゲットレコードが維持され、増分同期では上書きされます。
宛先インスタンスにおけるオブジェクト名の大文字小文字の処理MaxCompute におけるデータベース名、テーブル名、カラム名の大文字小文字を制御します。デフォルト: DTS デフォルトポリシー宛先インスタンスにおけるオブジェクト名の大文字小文字の指定。「」をご参照ください。
ソースオブジェクトオブジェクトを選択し、矢印アイコンをクリックして 選択済みオブジェクト に移動します。テーブルを選択できます。
選択済みオブジェクトオブジェクトを右クリックして、その名前を変更するか、同期する SQL 操作をフィルターします。複数のオブジェクトの名前を変更するには、[バッチ編集] をクリックします。行をフィルターするには、テーブルを右クリックして WHERE 条件を指定します。詳細については、「オブジェクト名のマッピング」および「フィルター条件の指定」をご参照ください。
オブジェクト名マッピングによるオブジェクトの名前変更は、依存オブジェクトの同期失敗を引き起こす可能性があります。

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

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

パラメーター説明
タスクスケジューリング用の専用クラスターデフォルトでは、DTS はタスクを共有クラスターにスケジュールします。より高い安定性を得るには、専用クラスターをご購入ください。詳細については、「DTS 専用クラスターとは」をご参照ください。
接続失敗時の再試行時間接続失敗時に DTS が再試行する時間です。有効範囲:10~1440 分。デフォルト:720 分。少なくとも 30 分以上に設定してください。複数のタスクが同一のソースまたはターゲットを共有する場合、最も短い再試行時間が適用されます。再試行中は、インスタンスの課金が発生します。
その他の問題発生時の再試行時間DML または DDL 操作失敗時の DTS の再試行時間です。有効範囲:1~1440 分。デフォルト:10 分。少なくとも 10 分以上に設定してください。接続失敗時の再試行時間 より短くする必要があります。
完全なデータ同期のスロットリングの有効化ソースへのクエリ/秒(QPS)、完全なデータ移行の RPS、およびデータ移行速度(MB/s)を制限して、負荷を軽減します。完全なデータ同期 が選択されている場合にのみ利用可能です。
増分データ同期のスロットリングの有効化増分同期の RPS およびデータ同期速度(MB/s)を制限して、ターゲット側の負荷を軽減します。
環境タグDTS インスタンスを環境(例:本番またはテスト)で識別するための任意のタグです。
フォワードおよびリバースタスクのハートビートテーブルに対する SQL 操作の削除の有無はい:DTS はハートビートテーブルの操作をソースに書き込みません。遅延値が表示される場合があります。いいえ:DTS はハートビート操作を書き込みますが、これによりソースの物理バックアップおよびクローン作成に影響が出る可能性があります。
ETL の構成[はい]: 抽出・変換・書き出し (ETL) を有効にします。コードエディタに処理文を入力します。詳細については、「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。[いいえ]: ETL を無効にします。
モニタリングとアラートはいモニタリングとアラートの設定:タスク失敗または遅延がしきい値を超えた場合のアラートを構成します。しきい値および通知先連絡先を設定します。「」をご参照ください。いいえ:アラートを無効化します。

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

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

このタスク構成の API パラメーターをプレビューするには、ボタンにカーソルを合わせて、OpenAPI パラメーターのプレビュー をクリックしてください。

DTS は、タスクを開始する前に事前チェックを実行します。

  • 項目が失敗した場合、詳細の表示 をクリックして原因を確認し、問題を修正した後、再度事前チェック をクリックします。

  • 項目が無視可能なアラートをトリガーした場合、アラート詳細の確認 をクリックし、ダイアログで 無視 をクリックして OK をクリックします。その後、再度事前チェック をクリックして続行します。アラートを無視すると、データの不整合が発生する可能性があります。

ステップ 7:インスタンスの購入および起動

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

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

パラメーター説明
支払い方法サブスクリプション:固定期間の前払い方式です。長期利用に適しており、コスト効率が優れています。従量課金:時間単位で課金されます。短期利用に適しています。作業完了後はインスタンスをリリースして、課金を停止してください。
リソースグループ設定項目インスタンスが属するリソースグループです。デフォルト値: デフォルトリソースグループResource Management とは
インスタンスクラスデータ同期インスタンスのインスタンスクラス同期処理の速度を決定します。詳細については、「」をご参照ください。
サブスクリプション期間サブスクリプション支払い方法でのみ利用可能です。選択肢:1~9か月、1年、2年、3年、または5年です。
  1. Data Transmission Service (従量課金) 利用規約 を読み、同意します。

  2. 購入および起動 をクリックします。確認ダイアログで OK をクリックします。

タスクはタスクリストに表示されます。そこから進行状況を監視できます。

増分データテーブルのスキーマ

増分データテーブルをクエリする前に、MaxCompute で以下のコマンドを実行して、全表スキャンを許可します。

set odps.sql.allow.fullscan=true;

_log テーブルは、ソースからの変更イベントを格納します。元のカラムデータに加えて、DTS は各行に以下のメタデータフィールドを追加します。

フィールド説明
record_idログエントリの固有識別子です。新しいエントリごとに自動インクリメントされます。UPDATE 操作の場合、DTS は変更前後の 2 つのエントリ(同じ record_id)を生成します。
operation_flag操作タイプ:I(INSERT)、D(DELETE)、U(UPDATE)。
utc_timestampUTC 表示の操作タイムスタンプで、バイナリログファイルのタイムスタンプに対応します。
before_flagY。それ以外の場合:N
after_flagY。それ以外の場合:N

UPDATE イベントの読み取り方法: DTS は各 UPDATE について 2 行を書き込みます。1 行目は before_flag=Y(元の値)で、もう 1 行目は after_flag=Y(新しい値)です。両方の行は同じ record_id を共有します。

次のステップ