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

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

最終更新日:Mar 29, 2026

Data Transmission Service (DTS) を使用して、ApsaraDB for MongoDB レプリカセットから ApsaraDB RDS for MySQL インスタンスへデータを継続的に同期します。DTS は bson_value() 式を用いて MongoDB のドキュメント構造をリレーショナルテーブルにフラット化するため、各 MongoDB フィールドが MySQL の列にマッピングされます。

開始前の準備

MongoDB と MySQL では、根本的に異なるデータモデルが採用されています。開始前に、DTS がこのギャップをどのように埋めるかを理解してください。

  • MongoDB の ドキュメント は、MySQL の と等価です。

  • MongoDB の コレクション は、MySQL の テーブル と等価です。

  • MongoDB のフィールドはネスト(階層的)ですが、MySQL の列はフラットです。DTS は bson_value() 式を用いて、ネストされたフィールドを個別の列にマッピングします。

前提条件

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

  • 宛先の ApsaraDB RDS for MySQL インスタンスが作成済みであり、ソースデータベース内の全データサイズより十分な空きストレージ容量があること。詳細については、「ApsaraDB RDS for MySQL インスタンスの作成」をご参照ください。推奨される空きストレージ容量は、ソースデータベース内の全データサイズより少なくとも 10 % 大きい値です。

  • 宛先インスタンスに、一意で複合でないプライマリキー列 を持つデータベースおよびテーブルが存在すること。「データベースの管理」をご参照ください。

  • 宛先テーブルの列型が、同期対象となる MongoDB のデータ型と互換性があること。たとえば、MongoDB の _id フィールドが ObjectId 型の場合、対応する MySQL 列は varchar 型である必要があります。

  • 宛先テーブルに、_id または _value という名前の列がないこと。

  • ソースが シャードクラスター の場合、すべてのシャードノードのエンドポイントが申請済みであること、およびすべてのシャードノードが同一のアカウントパスワードおよびエンドポイントを共有していること。「シャードのエンドポイント申請」をご参照ください。

必要な権限

DTS が各データベースに接続するために使用するデータベースアカウントに、以下の権限を付与してください。

データベース必要な権限リファレンス
ソース ApsaraDB for MongoDBソースデータベース、admin データベース、および local データベースに対する読み取り権限アカウント管理
宛先 ApsaraDB RDS for MySQL宛先データベースに対する読み取りおよび書き込み権限アカウントを作成するおよびアカウントの権限を変更する

制限事項

タスクの設定を行う前に、以下の制約事項を確認してください。

ソースデータベースの制約

  • ソースサーバーには十分なアウトバウンド帯域幅が必要です。帯域幅が低いと同期速度が低下します。

  • 同期対象として選択できるのは コレクション のみです。データベースレベルでの同期はできません。

  • 宛先でコレクション名を変更する場合、1 つのタスクで同期できるコレクション数は最大 1,000 個 です。それ以上のコレクションを同期する場合は、複数のタスクを作成してください。

  • DTS は、SRV エンドポイント経由で MongoDB に 接続できません

  • 以下のソースタイプは サポートされていません:スタンドアロンの ApsaraDB for MongoDB インスタンス、Azure Cosmos DB for MongoDB クラスター、Amazon DocumentDB エラスティッククラスター。

  • ソースデータベースには、oplog が有効化され、ログが最低 7 日間保持されるか、または過去 7 日間にわたって利用可能な チェンジストリーム が有効化されている必要があります。低レイテンシを実現するには、oplog(推奨)を使用してください。チェンジストリームを利用するには、MongoDB v4.0 以降が必要です。

シャードクラスターの制約

  • 同期対象の各コレクションの _id フィールドは一意である必要があります。

  • Mongos ノードの数は 10 を超えてはいけません

  • ソースには、孤立ドキュメントを含めてはいけません。詳しくは、「MongoDB ドキュメント」および「孤立ドキュメントの削除に関する FAQ」をご参照ください。

  • 同期中に以下のコマンドを実行しないでください:shardCollectionreshardCollectionunshardCollectionmoveCollection、または movePrimary

  • バランサーがアクティブな場合、レイテンシが発生する可能性があります。

同期動作の制約

  • 完全データ同期中は、データベースまたはコレクションのスキーマを変更したり、ARRAY 型のデータを変更したりしないでください。

  • 完全データ同期のみを実行する場合、タスク実行中はソースデータベースへの書き込みを行わないでください。

  • 増分同期では、挿入更新$set を介した更新)、および 削除 操作のみがサポートされます。トランザクションは保持されず、個別のレコードに変換されます。

  • データに 4 バイト文字(絵文字など)が含まれる場合、宛先テーブルは utf8mb4 文字セットを使用する必要があります。DTS がスキーマ同期を処理する場合、宛先インスタンスの character_set_server パラメーターを utf8mb4 に設定してください。

  • DTS は、adminconfig、または local データベースからのデータ同期をサポートしていません。

  • FLOAT の精度はデフォルトで 38 桁、DOUBLE の精度はデフォルトで 308 桁です。DTS は値の取得に ROUND(COLUMN,PRECISION) を適用します。デフォルトの精度が要件を満たすことを確認してください。

  • 完全データ同期中、同時実行の INSERT 操作により、宛先テーブルに断片化が発生し、ソースよりも高いストレージ使用量になる可能性があります。

  • DTS は、過去 7 日以内に失敗したタスクを再開しようと試みます。ワークロードを宛先データベースに切り替える前に、失敗したタスクを停止またはリリースしてください。あるいは、REVOKE ステートメントを用いて、DTS の宛先データベースに対する書き込み権限を取り消すことで、再開時にソースデータが宛先データを上書きするのを防ぐことができます。

  • 増分同期のレイテンシは、宛先で最新に同期されたデータのタイムスタンプとソースの現在時刻との差に基づいて計算されます。長期間更新が行われていない場合、ソースで更新操作を実行してレイテンシの読み取りをリフレッシュしてください。

課金

同期タイプ料金
完全データ同期無料
増分データ同期課金されます。課金概要

データ同期タスクの作成

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

DTS コンソールまたは Data Management Service (DMS) コンソールのいずれかを使用して、DTS タスクリストに移動します。

DTS コンソール

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

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

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

DMS コンソール

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

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

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

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

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

  2. (任意)右上隅に表示された場合、新規構成ページ をクリックします。以前のバージョンに戻る が既に表示されている場合は、このステップをスキップしてください。

以下のパラメーターを構成します。

カテゴリパラメーター説明
該当なしタスク名DTS が自動生成する名前です。識別しやすいように、説明的な名前を指定してください。タスク名は一意である必要はありません。
ソースデータベース既存の接続を選択ドロップダウンリストから登録済みのインスタンスを選択するか、接続パラメーターを手動で構成してください。
データベースタイプMongoDB> を選択します。
アクセス方法Alibaba Cloud インスタンス> を選択します。
インスタンスリージョンソース ApsaraDB for MongoDB インスタンスのリージョンです。
Alibaba Cloud アカウント間でのデータ複製現在のアカウント内のインスタンスを使用する場合は、<いいえ> を選択します。
アーキテクチャレプリカセット> を選択します。ソースが <シャードクラスター> の場合、<シャードアカウント> および <シャードパスワード> も指定してください。
移行方法低レイテンシを実現するには、推奨の <Oplog> を選択してください。oplog が利用できない場合は、<ChangeStream> を選択します。下記の注釈を参照して、制約事項を確認してください。
インスタンス IDソース ApsaraDB for MongoDB インスタンスの ID です。
認証データベースアカウント認証情報を格納する認証データベースです。デフォルトは admin です。
データベースアカウント必要な読み取り権限を持つアカウントです。
データベースパスワードデータベースアカウントのパスワードです。
暗号化非暗号化>、<SSL 暗号化>、または <Mongo Atlas SSL> を選択します。利用可能なオプションは、<アクセス方法> および <アーキテクチャ> の値によって異なります。DTS コンソールが適用可能なオプションを表示します。ソースデータベースが <レプリカセット> アーキテクチャを採用する自己管理 MongoDB データベースであり、<アクセス方法> が <Alibaba Cloud インスタンス> ではなく、<暗号化> が <SSL 暗号化> の場合、認証局 (CA) 証明書をアップロードして、ソースデータベースへの接続を検証できます。
宛先データベース既存の接続を選択登録済みのインスタンスを選択するか、接続パラメーターを手動で構成してください。
データベースタイプMySQL> を選択します。
アクセス方法Alibaba Cloud インスタンス> を選択します。
インスタンスリージョン宛先 ApsaraDB RDS for MySQL インスタンスのリージョンです。
Alibaba Cloud アカウント間でのデータ複製現在のアカウント内のインスタンスを使用する場合は、<いいえ> を選択します。
RDS インスタンス ID宛先 ApsaraDB RDS for MySQL インスタンスの ID です。
データベースアカウント必要な読み取りおよび書き込み権限を持つアカウントです。
データベースパスワードデータベースアカウントのパスワードです。
暗号化[暗号化なし] または [SSL 暗号化] を選択します。SSL 暗号化を使用するには、まず送信先の RDS インスタンスで SSL を有効化する必要があります。詳細については、「クラウド証明書を使用して SSL 暗号化を有効化する」をご参照ください。
移行方法 の制約事項:
Oplog は、oplog が有効化されているすべての ApsaraDB for MongoDB インスタンスに対してデフォルトかつ推奨されるオプションです。ログの高速プルにより、同期レイテンシが低減されます。
ChangeStream を使用するには、MongoDB v4.0 以降が必要です。
ソースが非伸縮性の Amazon DocumentDB クラスターの場合、データベースの変更ストリームを有効にし、[移行方法]ChangeStream に、[アーキテクチャ]シャードクラスター に設定する必要があります。
シャードクラスタ」を「アーキテクチャ」パラメーターで選択し、「移行方法」を ChangeStream に設定した場合、「シャードアカウント」および「シャードパスワード」のパラメーターを設定する必要はありません。
アーキテクチャ> が <シャードクラスター> で、<移行方法> が <Oplog> の場合、<暗号化> のオプションとして <SSL 暗号化> は利用できません。
  1. 接続テストと続行 をクリックします。

DTS は、ソースデータベースおよびターゲットデータベースに到達できる必要があります。各データベースのセキュリティ設定に DTS サーバーの CIDR ブロックを追加します。詳細については、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。自己管理データベースの場合は、[接続テスト][DTS サーバーの CIDR ブロック] ダイアログボックスでクリックします。

ステップ 3:オブジェクトの選択およびフィールドマッピングの構成

  1. オブジェクトの構成> ステップで、以下のオプションを設定します。

構成説明
同期タイプ増分データ同期> がデフォルトで選択されています。増分同期を開始する前に既存データを同期するには、<完全データ同期> を選択します。<スキーマ同期> は利用できません。
競合するテーブルの処理モード[事前チェックとエラー報告]: ソースと同じ名前のテーブルが送信先に存在する場合、事前チェックは失敗します。必要に応じて、オブジェクト名マッピングを使用してテーブル名を変更します。詳細については、「オブジェクト名マッピング」をご参照ください。[エラーを無視して続行]: 名前競合のチェックをスキップします。完全同期中は、送信先の競合するレコードは保持されます。増分同期中は、それらのレコードは上書きされます。注意して使用してください。
宛先インスタンスにおけるオブジェクト名の大文字小文字宛先インスタンスでのデータベース名、テーブル名、および列名の大文字小文字を制御します。デフォルトは DTS デフォルトポリシー です。詳細については、「宛先インスタンスでのオブジェクト名の大文字小文字の指定」をご参照ください。
ソースオブジェクト[ソース オブジェクト] から 1 つ以上のコレクションを選択し、向右 をクリックして、[選択済みオブジェクト] に追加します。オブジェクトはコレクション単位で選択されます。
  1. 選択済みオブジェクト> で、MongoDB コレクションを MySQL テーブルにマッピングします。a. 宛先データベース名の変更: b. 宛先テーブル名の変更: c. フィールドマッピングの構成: DTS はコレクション内の各フィールドについて、bson_value() 式を自動生成します。マッピングが正しいことを確認した後、各列の <列名>、<>、<長さ>、および <精度> を設定します。

    • 式内の MongoDB フィールド名を表示するには:<""> 内の文字列がフィールド名です。たとえば、<bson_value("age")> は <age> フィールドをマッピングします。

    • 同期する必要がないフィールドを削除するには、その行の末尾にある image をクリックします。

    • カスタム式を必要とするフィールドを追加するには:

      1. 任意の行の末尾で image をクリックし、次に [+ 列を追加] をクリックします。 image

      2. 列名>、<>、<長さ>、および <精度> を設定します。

      3. bson_value() 式を [値の割り当て] に入力します。参考として、「フィールドマッピングの例」セクションをご覧ください。

      4. 追加の列ごとに繰り返します。

    1. [選択済みオブジェクト] でコレクションを右クリックします。image

    2. [テーブル名] を、送信先の MySQL インスタンス内のターゲットテーブルの名前に変更します。image

    3. (省略可)データの一部のみを同期するには、フィルター条件を指定します。詳細については、「フィルター条件を指定する」をご参照ください。 image

    4. (オプション) [同期する DDL および DML 操作] で、増分同期中に同期する操作を選択します。イメージ

    重要

    プライマリキー列には、<bson_value("_id")> を割り当てます。ネストされたフィールドについては、<bson_value()> 内でカンマ区切りの引数を使用して完全なパスを指定します。たとえば、<bson_value("person","name")>(<bson_value("person")> ではなく)を使用して、<name> サブフィールドをマッピングします。親フィールドのみを使用すると、すべてのサブフィールドについて増分データが失われる可能性があります。

  2. OK をクリックし、次に <次へ:高度な設定> をクリックします。

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

構成説明
タスクスケジューリング用専用クラスターDTS はデフォルトで共有クラスターを使用します。より高い安定性を実現するには、専用クラスターをご購入ください。詳細については、「DTS 専用クラスターとは」をご参照ください。
接続失敗時の再試行時間接続失敗後に DTS が再試行する時間です。有効範囲:10~1440 分。デフォルト:720 分。30 分を超える値を設定することを推奨します。複数のタスクが同一のソースまたは宛先を共有する場合、最も短い再試行時間が適用されます。
その他の問題発生時の再試行時間DDL または DML の失敗後に DTS が再試行する時間です。有効範囲:1~1440 分。デフォルト:10 分。10 分を超える値を設定することを推奨します。この値は、<接続失敗時の再試行時間> よりも小さくする必要があります。
完全データ同期のスロットリングの有効化完全同期中の DTS の読み取り/書き込み速度を制限して、ソースおよび宛先サーバーへの負荷を軽減します。<ソースデータベースへのクエリ数(QPS)>、<完全データ移行の RPS>、および <完全移行のデータ移行速度(MB/s)> を構成します。<完全データ同期> が選択されている場合にのみ利用可能です。
同期対象データのテーブル内でプライマリキー _id に使用されるデータ型は 1 種類のみ「完全データ同期」が選択されている場合にのみ利用可能です。[はい] を選択すると、コレクション内のすべての _id 値が同じデータの型を共有している場合(型スキャンをスキップ)に適用されます。[いいえ] を選択すると、混合型をスキャンします。
増分データ同期のスロットリングの有効化増分同期中の DTS の速度を制限します。<増分データ同期の RPS> および <増分同期のデータ同期速度(MB/s)> を構成します。
環境タグこの DTS インスタンスを識別するタグです。任意です。
ETL の構成抽出・変換・書き出し (ETL) 変換を適用するには、[はい] を選択します。コードエディタに処理文を入力します。「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。
モニタリングとアラートタスクが失敗した場合、またはレイテンシがしきい値を超えた場合にアラートを送信するには、[はい] を選択します。アラートのしきい値と通知の連絡先を設定します。詳細については、「DTS タスクを作成するときにモニタリングとアラートを設定する」をご参照ください。

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

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

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

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

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

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

  3. 再チェック> をクリックします。

項目が無視可能なアラートをトリガーした場合:

  1. アラート詳細の確認> をクリックし、<詳細の表示> ダイアログボックスで <無視> をクリックします。

  2. OK> をクリックし、次に <再チェック> をクリックします。

重要

アラート項目を無視すると、データの不整合が発生する可能性があります。慎重にご使用ください。

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

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

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

パラメーター説明
[課金方法]サブスクリプション:固定期間 (1~9 か月、または 1、2、3、5 年) の前払いです。長期利用に費用対効果が高いです。従量課金:時間単位で課金されます。短期利用に適しています。
[リソースグループ設定]このインスタンスのリソースグループです。デフォルト:デフォルトリソースグループ。詳細については、「Resource Management とは
[インスタンスクラス]同期スループットクラスです。詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。
  1. Data Transmission Service(従量課金)サービス利用規約> を読み、選択してください。

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

タスクがタスクリストに表示されます。そこで進行状況を追跡できます。

データ型マッピング

DTS は、MongoDB の BSON 型を以下のように MySQL の型にマッピングします。

MongoDB のデータ型MySQL のデータ型
ObjectIdVARCHAR
StringVARCHAR
DocumentVARCHAR
DbPointerVARCHAR
ArrayVARCHAR
DateDATETIME
TimeStampDATETIME
DoubleDOUBLE
32-bit integer (BsonInt32)INTEGER
64-bit integer (BsonInt64)BIGINT
Decimal128DECIMAL
BooleanBOOLEAN
NullVARCHAR

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

この例では、ネストされた MongoDB ドキュメントをフラットな MySQL テーブルにマッピングする方法を示します。

ソース MongoDB ドキュメント構造

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

宛先 MySQL テーブルスキーマ

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

フィールド割り当て構成

すべての例で、ネストされた <person> オブジェクトから個々のフィールドを抽出するために <bson_value()> を使用します。

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

完全なフィールドパスをカンマ区切りの引数で指定します。<bson_value("person","name")> は <name> サブフィールドを抽出します。<bson_value("person")> のみを使用すると、DTS は <name>、<age>、および <person> の他のすべてのサブフィールドについて、増分更新の書き込みに失敗します。

次のステップ

  • DTS コンソールのタスクリストで同期タスクをモニタリングします。

  • ワークロードを宛先データベースに切り替える前に、データ整合性を検証し、過去 7 日以内に失敗したタスクを停止またはリリースしてください。

  • 失敗したタスクが再開された際に、DTS が宛先データを上書きしないようにするには、<REVOKE> を使用して、DTS の宛先データベースに対する書き込みアクセス権限を取り消します。

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