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

Data Transmission Service:ApsaraDB for MongoDB インスタンスから PolarDB for MySQL クラスターへのデータ同期

最終更新日:Mar 29, 2026

Data Transmission Service (DTS) は、ApsaraDB for MongoDB のレプリカセットから PolarDB for MySQL クラスターへデータを同期します。本トピックでは、同期タスクの作成から実行までの手順を説明します。

事前準備

同期タスクを作成する前に、以下の準備作業を完了してください。

宛先クラスターの設定

  • ソースデータの合計サイズより大きな空きストレージ容量を持つ PolarDB for MySQL クラスターを作成します。(推奨:少なくとも 10 % の余裕を確保)「カスタム購入」および「サブスクリプションクラスターの購入」をご参照ください。

  • 宛先クラスターに、プライマリキー列を含むデータベースおよびテーブルを作成します。「データベースの管理」をご参照ください。

重要

宛先テーブルのスキーマ設計時の注意点:

  • MongoDB の ObjectId _id フィールドに対応する列には、varchar を使用します。

  • 列名に _id または _value を指定しないでください。

必要な権限を持つアカウントの設定

データベース必要な権限参考情報
ソース ApsaraDB for MongoDBソースデータベース、管理者データベース、およびローカルデータベースでの読み取りアカウント管理
宛先 PolarDB for MySQL宛先データベースに対する読み取りおよび書き込み権限データベースアカウントの作成と管理

(シャードクラスターのみ)シャードエンドポイントの申請

ソースがシャードクラスターの場合、すべてのシャードノードに対してエンドポイントを申請します。すべてのシャードノードは、同一のアカウントパスワードおよびエンドポイントを共有する必要があります。「シャードのエンドポイント申請」をご参照ください。

課金

同期タイプ料金
完全データ同期無料
増分データ同期課金対象です。「課金概要」をご参照ください。

同期タイプ

タイプ説明
完全データ同期ソース ApsaraDB for MongoDB インスタンスの既存データを、宛先 PolarDB for MySQL クラスターに同期します。
増分データ同期完全データ同期の完了後、挿入、更新、削除操作を継続的に同期します。$set コマンドを使用して更新されたドキュメントのみが対象となります。

制限事項

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

制限事項詳細
アウトバウンド帯域幅ソースサーバーには十分なアウトバウンド帯域幅が必要です。帯域幅が不足していると、同期速度が低下します。
コレクション数の上限オブジェクト名の変更が必要な場合、1 つのタスクで最大 1,000 個のコレクションをサポートします。1,000 個を超えるコレクションを同期する場合は、複数のタスクを設定してください。
非対応データベースDTS は、adminconfiglocal データベースからのデータ同期をサポートしません。
非対応ソースタイプスタンドアロン型の ApsaraDB for MongoDB インスタンス、Azure Cosmos DB for MongoDB クラスター、Amazon DocumentDB エラスティッククラスターはサポートされていません。
Oplog または Change StreamOplog 機能を有効化し、操作ログを最低 7 日間保持するか、または Change Stream を有効化し、DTS が過去 7 日間以内の変更をサブスクライブ可能である必要があります。いずれの条件も満たさない場合、DTS がログを取得できず、タスクが失敗したりデータの不整合が発生したりする可能性があります。
ストリーム バージョンの変更Change Stream を使用するには、MongoDB v4.0 以降が必要です。
Amazon DocumentDB 非エラスティッククラスター移行方法ChangeStream に、アーキテクチャSharded Cluster に設定します。
完全同期中の操作データベースまたはコレクションのスキーマ変更、ARRAY 型データの変更を行わないでください。完全同期のみ(増分同期なし)を実行する場合は、ソースデータベースへの書き込みを禁止します。

シャードクラスター固有の追加制限事項:

  • 各コレクションの _id フィールドは一意である必要があります。_id 値が重複すると、データの不整合が発生します。

  • mongos ノードの数は 10 を超えてはなりません。

  • インスタンスには孤立ドキュメントを含めてはなりません。MongoDB ドキュメントおよびよくある質問トピックをご参照ください。

  • ApsaraDB for MongoDB の balancer が有効化されている場合、インスタンスに遅延が発生する可能性があります。

宛先データベースおよびタスクの制限事項

制限事項詳細
同期対象オブジェクトの種類同期対象として選択できるのはコレクションのみです。
プライマリキーの要件宛先テーブルには、一意の単一列プライマリキー(複合プライマリキーは非対応)が必要です。プライマリキー列には bson_value("_id") を割り当てます。
予約済み列名宛先テーブルには、_id または _value という名前の列を含めることはできません。
トランザクショントランザクションは保持されません。同期されたトランザクションは、個別のレコードに変換されます。
文字セットデータに稀少文字や絵文字(4 バイト文字)が含まれる場合、宛先データベースおよびテーブルは UTF8mb4 文字セットを使用する必要があります。DTS スキーマ同期を利用する場合は、character_set_server パラメーターを UTF8mb4 に設定します。
FLOAT/DOUBLE の精度DTS は ROUND(COLUMN,PRECISION) を使用して FLOAT および DOUBLE 値を処理します。精度が指定されていない場合、DTS は FLOAT に対してデフォルトで 38 桁、DOUBLE に対して 308 桁を適用します。同期開始前にこれらのデフォルト値を確認してください。
オフピーク時間非ピーク時間帯に同期を実行してください。完全データ同期では、両方のデータベースの読み取りおよび書き込みリソースが使用されるため、サーバー負荷が増加する可能性があります。
同期後のストレージ完全同期完了後、同時 INSERT 操作により宛先コレクションに断片化が発生し、ソースよりも高いストレージ使用量になる可能性があります。
失敗したタスクの再開DTS は、失敗したタスクを最大 7 日間再開しようと試みます。ワークロードを宛先に切り替える前に、失敗したタスクを停止または解放するか、REVOKE を使用して DTS の書き込み権限を取り消してください。そうしないと、タスクが再開された際にソースデータが宛先データを上書きする可能性があります。
同期遅延の計算DTS は、増分同期の遅延を、宛先で最新に同期されたデータのタイムスタンプとソースの現在時刻に基づいて計算します。ソースでの更新が長期間行われていない場合、遅延の測定値が不正確になる可能性があります。遅延を更新するには、ソースで更新操作を実行してください。
タスク障害の復旧DTS タスクが失敗した場合、DTS テクニカルサポートが 8 時間以内に復旧を試みます。タスクは再起動され、タスクパラメーター(データベースパラメーターではない)が変更される可能性があります。

データ同期タスクの作成

タスクの構成は、以下の 5 ステップで構成されます:

  1. データ同期ページに移動します。

  2. ソースおよび宛先データベースを構成します。

  3. 同期対象のオブジェクトを構成します。

  4. 事前チェックを実行します。

  5. インスタンスを購入します。

ステップ 1:データ同期ページに移動

以下のいずれかの方法を使用します。

DTS コンソール

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

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

  3. 左上隅で、同期タスクが存在するリージョンを選択します。

DMS コンソール

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

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

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

ステップ 2:ソースおよび宛先データベースの構成

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

  2. (任意)右上隅の 新規構成ページ をクリックします。

    - 「以前のバージョンに戻る」が表示されている場合は、このステップはスキップしてください(すでに新バージョンが表示されています)。 - 可能な限り、新バージョンの構成ページをご利用ください。
  3. 以下のパラメーターを使用して、ソースおよび宛先データベースを構成します。

一般

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

ソースデータベース

パラメーター説明
既存の接続を選択ソースインスタンスが既に DTS に登録済みの場合は、ドロップダウンリストから選択してください。DTS が残りのパラメーターを自動的に設定します。それ以外の場合は、以下に示すパラメーターを手動で構成してください。DMS コンソールでは、DMS データベースインスタンスの選択 ドロップダウンリストからインスタンスを選択します。
データベースタイプMongoDB を選択します。
アクセス方法Alibaba Cloud インスタンス を選択します。
インスタンスリージョンソース ApsaraDB for MongoDB インスタンスが存在するリージョンです。
Alibaba Cloud アカウント間でのデータ複製ソースデータベースが現在の Alibaba Cloud アカウントに属する場合は、いいえ を選択します。
アーキテクチャソースインスタンスのアーキテクチャです。本例では レプリカセット を選択します。ソースが シャードクラスター の場合は、シャードアカウント および シャードパスワード も指定します。
移行方法増分データを同期する方法です。選択肢: Oplog(推奨)または ChangeStream。<br>- Oplog:Oplog 機能が有効化されている必要があります。ApsaraDB for MongoDB インスタンスでは Oplog がデフォルトで有効化されており、ログの高速プル機能により同期遅延が低減されます。<br>- ChangeStream:Change Stream が有効化されている必要があります。MongoDB v4.0 以降で利用可能です。Amazon DocumentDB イネラスティッククラスターでは ChangeStream のみを使用できます。アーキテクチャシャードクラスター の場合、シャードアカウント および シャードパスワード のパラメーターは不要です。「Change Streams」をご参照ください。
インスタンス IDソース ApsaraDB for MongoDB インスタンスの ID です。
認証データベースアカウント認証情報が格納されているデータベースです。デフォルト: admin
データベースアカウント必要な権限を持つアカウントです。
データベースパスワードデータベースアカウントのパスワードです。
暗号化接続の暗号化方法です:暗号化なしSSL 暗号化、または Mongo Atlas SSL。利用可能なオプションは、アクセス方法 および アーキテクチャ の設定によって異なります — コンソールに表示されるオプションが適用されます。
説明

アーキテクチャシャードクラスター で、移行方法Oplog の場合、SSL 暗号化は利用できません。Alibaba Cloud 以外のアクセス方法で SSL 暗号化を使用する自己管理 MongoDB(レプリカセットアーキテクチャ)では、CA 証明書をアップロードして接続を検証してください。

宛先データベース

パラメーター説明
既存の接続を選択宛先インスタンスが既に DTS に登録済みの場合は、ドロップダウンリストから選択してください。DTS が残りのパラメーターを自動的に設定します。それ以外の場合は、以下に示すパラメーターを手動で構成してください。
データベースタイプPolarDB for MySQL を選択します。
アクセス方法Alibaba Cloud インスタンス を選択します。
インスタンスリージョン宛先 PolarDB for MySQL クラスターが存在するリージョンです。
Alibaba Cloud アカウント間でのデータ複製宛先データベースが現在の Alibaba Cloud アカウントに属する場合は、いいえ を選択します。
PolarDB クラスター ID宛先 PolarDB for MySQL クラスターの ID です。
データベースアカウント必要な権限を持つアカウントです。
データベースパスワードデータベースアカウントのパスワードです。
暗号化接続の暗号化方法です。「SSL 暗号化の設定」をご参照ください。
  1. 接続テストと続行 をクリックします。

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

ステップ 3:同期対象オブジェクトの構成

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

パラメーター説明
同期タイプ増分データ同期 がデフォルトで選択されています。必要に応じて 完全データ同期 を選択します。スキーマ同期 は選択できません。
競合テーブルの処理モード事前チェックとエラー報告(デフォルト):タスク開始前にテーブル名の競合をチェックします。同一のテーブル名が存在する場合、事前チェックは失敗し、タスクは開始できません。競合するテーブルを削除または名前変更できない場合は、「オブジェクト名マッピング」機能を使用してテーブル名を変更してください。<br>エラーを無視して続行:競合チェックをスキップします。
警告

このオプションはデータの不整合を引き起こす可能性があります。完全同期中は、主キーまたは一意キーが一致する既存の宛先レコードが保持されます。増分同期中は、それらのレコードが上書きされます。スキーマが異なる場合、初期化が失敗したり、一部の列のみが同期されたりする可能性があります。

宛先インスタンスにおけるオブジェクト名の大文字小文字の扱い送信先のデータベース名、テーブル名、および列名の大文字小文字のポリシー。デフォルト: [DTS デフォルトポリシー]。詳細については、「送信先インスタンス内のオブジェクト名の大文字小文字を指定する」をご参照ください。
ソースオブジェクトソースオブジェクト セクションから 1 つ以上のコレクションを選択し、向右 アイコンをクリックして 選択済みオブジェクト セクションに移動します。
  1. 選択済みオブジェクト セクションで、オブジェクトマッピングを構成します。(任意)同期不要のフィールドを削除するには、該当行の後に表示される image アイコンをクリックします。

    1. データベース名の変更選択済みオブジェクト 内のデータベースを右クリックし、image スキーマ名 を PolarDB for MySQL のターゲットデータベース名に変更し、image OK をクリックします。

    2. コレクション名の変更選択済みオブジェクト 内のコレクションを右クリックし、image テーブル名 を PolarDB for MySQL のターゲットテーブル名に変更します。image

      • (任意)フィルター条件を指定します。「フィルター条件の指定」をご参照ください。image

      • (任意)同期対象の DDL および DML 操作の選択 セクションで、同期対象の増分操作を選択します。image

    3. フィールドのマッピング:DTS はコレクションデータを自動的にマッピングし、値の割り当て 列に bson_value() 式を生成します。式が要件を満たすことを確認したうえで、各フィールドについて 列名長さ精度 を構成します。

      重要

      宛先テーブルのプライマリキー列には bson_value("_id") を割り当てます。各 bson_value() 式では、ドキュメントの階層構造に従ってフィールドおよびそのサブフィールドの両方を指定してください。親フィールドのみ(例:bson_value("person"))を指定しても、そのサブフィールドは宛先に同期されません。

      正しい式を持つフィールド

      1. 列名 を、宛先 PolarDB for MySQL テーブル内の対応する列名に設定します。

      2. を、ソースデータと互換性のある型から選択します。データ型のマッピングについては、「データ型マッピング」セクションをご参照ください。

      3. (任意)長さ および 精度 を設定します。

      4. 各フィールドについて同様の手順を繰り返します。

      誤った式を持つフィールド

      1. 行の [アクション] 列にある image アイコンをクリックします。

      2. + 列の追加 をクリックします。image

      3. 列名長さ精度 を設定します。

      4. 値の割り当て に正しい bson_value() 式を入力します。例については、「フィールドマッピングの例」セクションをご参照ください。

      5. 各フィールドについて同様の手順を繰り返します。

      重要

      - 宛先テーブルのプライマリキー列には bson_value("_id") を割り当てます。 - 各 bson_value() 式では、ドキュメントの階層構造に従ってフィールドおよびそのサブフィールドの両方を指定してください。親フィールドのみ(例:bson_value("person"))を指定しても、そのサブフィールドは宛先に同期されません。

    4. OK をクリックします。

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

パラメーター説明
タスクスケジューリング用専用クラスターデフォルトでは、DTS はタスクを共有クラスターにスケジュールします。同期の安定性を向上させるには、専用クラスターをご購入ください。詳細については、「DTS 専用クラスターとは」をご参照ください。
宛先データベースのエンジンタイプの選択宛先データベースのストレージエンジンです。選択肢:InnoDB(デフォルト)または X-Engine(OLTP ワークロード向け)。
接続失敗時の再試行時間DTS が接続失敗時に再試行する時間範囲です。有効値:10~1440 分。デフォルト:720 分。30 分より大きい値を設定してください。この範囲内に DTS が再接続できた場合、タスクは再開されます。そうでない場合、タスクは失敗します。同じソースまたは宛先データベースを複数のタスクが共有し、再試行範囲が異なる場合、最も短い範囲が優先されます。再試行中も課金は継続されます。
その他の問題発生時の再試行時間DTS が失敗した DDL または DML 操作を再試行する時間範囲です。有効値:1~1440 分。デフォルト:10 分。10 分より大きく、かつ 接続失敗時の再試行時間 より小さい値を設定してください。
完全データ同期のスロットリング有効化完全同期中の読み取り/書き込みリソース使用量を制限し、データベースサーバーの負荷を軽減します。ソースデータベースへのクエリ数(QPS)完全データ移行の RPS完全移行のデータ移行速度(MB/s) を構成します。完全データ同期 が選択されている場合にのみ利用可能です。
同期対象データのテーブルにおいて、プライマリキー _id は 1 つのデータ型のみ許可完全同期中に DTS が _id のデータ型をスキャンするかどうかを制御します。はいアラート通知設定:スキャンをスキップします。いいえ:型をスキャンします。完全データ同期 が選択されている場合にのみ表示されます。
増分データ同期のスロットリング有効化増分同期中のリソース使用量を制限します。増分データ同期の RPS および 増分同期のデータ同期速度(MB/s) を構成します。
環境タグタスクを分類するための任意のタグです。
ETL の構成抽出・変換・書き出し(ETL)機能を有効化するかどうかを指定します。はいETL の設定:コードエディタにデータ処理文を入力します。「」をご参照ください。いいえ:ETL を無効化します。
モニタリングとアラートアラートを設定するかどうかを指定します。 [はい]: アラートのしきい値と通知の連絡先を設定します。 [いいえ]: アラートは設定されません。 詳細については、「モニタリングとアラートの設定」をご参照ください。

ステップ 4:設定の保存と事前チェックの実行

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

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

DTS はタスク開始前に事前チェックを実行します。事前チェックに合格した場合のみ、タスクが開始されます。
事前チェックが失敗した場合、各失敗項目の横にある 詳細の表示 をクリックし、問題を修正したうえで 再び事前チェック をクリックしてください。
アラートがトリガーされた場合:無視できない項目については、問題を修正して事前チェックを再実行してください。無視可能な項目については、アラート詳細の確認 > 無視 > OK > 再び事前チェック の順にクリックしてください。アラートを無視すると、データの不整合が発生する可能性があります。

ステップ 5:インスタンスの購入

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

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

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

  2. 購入して開始 をクリックし、ダイアログボックスで OK をクリックします。

タスクが開始された後は、タスクリストで進行状況を監視してください。

データ型マッピング

以下の表は、MongoDB のデータ型と PolarDB for MySQL のデータ型の対応関係を示しています。

MongoDB のデータ型PolarDB for MySQL のデータ型備考
ObjectIdVARCHAR文字列表現として格納されます。
StringVARCHAR
DocumentVARCHAR
DbPointerVARCHAR
ArrayVARCHAR
DateDATETIME
TimeStampDATETIME
DoubleDOUBLE精度が指定されていない場合、ROUND(COLUMN,PRECISION) を使用してデフォルトで 308 桁が適用されます。
32 ビット整数(BsonInt32)INTEGER
64 ビット整数(BsonInt64)BIGINT
Decimal128DECIMAL
BooleanBOOLEAN
NullVARCHAR

フィールドマッピングの例

以下の例では、ソースドキュメント構造および宛先テーブルスキーマを前提としています。

ソース ApsaraDB for MongoDB インスタンスのデータ構造

{
  "_id": "62cd344c85c1ea6a2a9f****",
  "person": {
    "name": "neo",
    "age": 26,
    "sex": "male"
  }
}

宛先 PolarDB for MySQL クラスターのテーブルスキーマ

列名備考
mongo_idvarcharプライマリキー
person_namevarchar
person_agedecimal

新規列の構成

すべての 3 つの宛先列には、person がサブフィールドを含む親フィールドであるため、ネストされたフィールド式が必要です。

列名値の割り当て
mongo_idSTRINGbson_value("_id")
person_nameSTRINGbson_value("person","name")
person_ageDECIMALbson_value("person","age")
重要

bson_value("person") のみを指定しても、nameagesex などのサブフィールドは個別の列に同期されません。bson_value() 式には、常に完全な階層パスを指定してください。

この構成後、宛先テーブルには以下の構造でデータが受信されます:

mongo_idperson_nameperson_age
62cd344c85c1ea6a2a9f****neo26