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

ApsaraDB for MongoDB:ApsaraDB\ for\ MongoDB\ レプリカセットインスタンスから\ ApsaraDB\ for\ MongoDB\ レプリカセットまたはシャードクラスターインスタンスへのデータ同期

最終更新日:Mar 28, 2026

Data Transmission Service (DTS) を使用して、ソースデータベースをオフラインにすることなく、MongoDB レプリカセットから別のレプリカセットまたはシャードクラスターにデータを継続的に同期します。

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

ソース宛先
ApsaraDB for MongoDB レプリカセットインスタンスApsaraDB for MongoDB レプリカセットまたはシャードクラスターインスタンスこのトピックでは、この組み合わせを例として使用します。
Elastic Compute Service (ECS) インスタンス上の自己管理 MongoDB レプリカセットECS インスタンス上の自己管理 MongoDB レプリカセットまたはシャードクラスター同じ手順に従ってください。
Express Connect、VPN Gateway、または Smart Access Gateway (SAG) 経由で接続された自己管理 MongoDB レプリカセットExpress Connect、VPN Gateway、または SAG 経由で接続された自己管理 MongoDB レプリカセットまたはシャードクラスター同じ手順に従ってください。
サポートされている MongoDB のバージョンの組み合わせについては、「データ同期シナリオの概要」をご参照ください。ターゲットのバージョンは、ソースのバージョンと同じか、それ以降である必要があります。

前提条件

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

  • ソースの ApsaraDB for MongoDB レプリカセットインスタンスと、ターゲットのレプリカセットまたはシャードクラスターインスタンスの両方を作成済みであること。詳細については、「レプリカセットインスタンスの作成」および「シャードクラスターインスタンスの作成」をご参照ください。

  • ターゲットインスタンスの利用可能なストレージ容量が、ソースインスタンスの総データサイズより少なくとも 10% 大きいことを確認済みであること。

  • (シャードクラスターをターゲットとする場合) シャーディング対象のデータベースとコレクションを作成し、シャーディングを設定し、バランサーを有効にし、事前シャーディングを実行済みであること。詳細については、「シャードのパフォーマンスを最大化するためのシャーディング設定」をご参照ください。

事前シャーディングは、同期データをシャードに分散し、データスキューを防ぎます。ソースデータにシャードキーを追加できない場合は、「MongoDB (シャードキーなし) を MongoDB (シャードクラスターアーキテクチャ) に同期する」をご参照ください。

課金

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

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

  • 一方向 1 対 1 同期

  • 一方向 1 対多同期

  • 一方向多対 1 同期

  • 一方向カスケード同期

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

同期タイプ

タイプDTS が同期する内容
スキーマ同期選択したオブジェクトのスキーマをソースからターゲットへ
完全データ同期選択したオブジェクトの履歴データ。サポートされるオブジェクト:データベースとコレクション。
増分データ同期完全同期完了後の継続的な変更。サポートされる操作:CREATE COLLECTION、CREATE INDEX、DROP DATABASE、DROP COLLECTION、DROP INDEX、RENAME COLLECTION、およびドキュメントレベルの挿入、更新、削除。タスク開始後に作成されたデータベースは含まれません。トランザクションは単一のレコードに変換され、トランザクションコンテキストは保持されません。

oplog の使用

DTS タスクは、タスクの実行開始後に作成されたデータベースからの増分データを同期しません。DTS は、以下の操作によって生成された増分データを同期します:

  • CREATE COLLECTION および INDEX

  • DROP DATABASE、COLLECTION、および INDEX

  • RENAME COLLECTION

  • コレクション内のドキュメントを挿入、更新、削除するために実行される操作。

    説明

    ドキュメントの増分データを同期する場合、$set コマンドを使用する更新操作のみがサポートされます。

change streams の使用

DTS は、以下の操作によって生成された増分データを同期します:

  • DROP DATABASE および COLLECTION

  • RENAME COLLECTION

  • コレクション内のドキュメントを挿入、更新、削除するために実行される操作。

    説明

    ドキュメントの増分データを同期する場合、$set コマンドを使用する更新操作のみがサポートされます。

制限事項

タスクを設定する前に、これらの制約を確認してください。これらに違反すると、タスクの失敗やデータの不整合が発生する可能性があります。

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

制約詳細
アウトバウンド帯域幅ソースサーバーには十分なアウトバウンド帯域幅が必要です。帯域幅が不足すると同期が遅くなります。
プライマリキーまたは一意キーコレクションには、フィールド値が重複しない PRIMARY KEY または UNIQUE 制約が必要です。そうでない場合、ターゲットに重複レコードが含まれる可能性があります。
コレクション数 (ターゲットコレクションの編集時)同期オブジェクトとしてコレクションを選択し、ターゲットで名前を変更する予定の場合、タスクあたり最大 1,000 コレクションです。これ以上のコレクションがある場合は、複数のタスクを実行するか、データベースレベルで同期してください。
単一ドキュメントのサイズ16 MB を超えることはできません。より大きなドキュメントはタスクの失敗を引き起こします。
サポートされていないソースAzure Cosmos DB for MongoDB クラスターおよび Amazon DocumentDB エラスティッククラスターはサポートされていません。
oplog または change streamsoplog を有効にし、少なくとも 7 日間のログを保持する必要があります。または、過去 7 日間をカバーする change streams を有効にしてください。どちらの条件も満たされない場合、DTS は変更をキャプチャできず、データ損失を引き起こす可能性があり、これは DTS の SLA の対象外です。可能な限り oplog を使用してください。change streams は MongoDB 4.0 以降が必要で、双方向同期をサポートしていません。非エラスティックな Amazon DocumentDB クラスターの場合、change streams を有効にし、移行方法ChangeStream に、アーキテクチャシャードクラスターに設定してください。
TTL インデックスTTL インデックスを持つコレクションは同期できません。同期を試みると、データの不整合が発生する可能性があります。
同期中のスキーマ変更スキーマ同期または完全データ同期の実行中は、データベースまたはコレクションのスキーマ (配列型の更新を含む) を変更しないでください。
完全同期のみの場合の書き込み増分同期を実行しない場合、完全データ同期中にソースデータベースに書き込まないでください。

ターゲットデータベースの要件

制約詳細
シャードクラスター:孤立ドキュメント開始前にすべての孤立ドキュメントをクリアしてください。孤立ドキュメントはパフォーマンスを低下させ、_id の競合やタスクの失敗を引き起こす可能性があります。
シャードクラスター:シャードキー開始前にソースデータにシャードキーを追加してください。同期中、INSERT 操作にはシャードキーを含める必要があり、UPDATE 操作ではシャードキーを変更できません。
レプリカセット:接続エンドポイントExpress Connect、VPN Gateway、SAG、パブリック IP アドレス、または Cloud Enterprise Network (CEN) を介して接続する場合、[ドメイン名または IP] および [ポート番号] をプライマリノードの IP アドレスとポートに設定するか、高可用性エンドポイントを使用します。詳細については、「高可用性 MongoDB データベースをソースまたはターゲットとして使用する DTS タスクの作成」をご参照ください。自己管理型 ECS インスタンスを介して接続する場合、[ポート番号] をプライマリノードのポートに設定します。
一意なインデックスまたは capped コレクション一意なインデックスまたは capped: true を持つコレクションは、シングルスレッドの書き込みのみをサポートします。これにより、増分同期中の同時リプレイが無効になり、レイテンシーが増加する可能性があります。
除外されるデータベースDTS は admin または local データベースを同期しません。
プライマリキーの競合ターゲットにソースと同じ _id を持つドキュメントがないことを確認してください。競合が存在する場合、タスクを開始する前にターゲットから競合するドキュメントを削除してください。

一般的な制約

制約詳細
パフォーマンスへの影響データを同期する前に、ソースおよびターゲットデータベースのパフォーマンスへの影響を評価してください。オフピーク時にデータを同期することを推奨します。完全データ同期中、DTS はソースおよびターゲットデータベースの読み取りおよび書き込みリソースを使用するため、データベースサーバーの負荷が増加する可能性があります。
ストレージの拡張完全同期中の同時書き込みは、コレクションの断片化を引き起こします。ターゲットのストレージは、ソースよりも 5%~10% 大きくなります。
他のソースからの書き込み同期中に他のソース (例えば、オンライン DDL 操作のために Data Management (DMS) を使用するなど) からターゲットに書き込まないでください。同時外部書き込みはデータ損失を引き起こす可能性があります。
カウントクエリの構文ターゲットでドキュメントをカウントするには、db.$table_name.aggregate([{ $count:"myCount"}]) を使用してください。
タスクの回復DTS タスクが失敗した場合、DTS サポートは 8 時間以内に復旧を試みます。回復中にタスクが再起動されたり、タスクパラメーターが変更されたりする場合があります。データベースパラメーターは変更されません。
接続失敗時の再試行時間有効範囲:10~1,440 分。デフォルト:720 分。30 分より大きい値を設定してください。この期間内に接続が回復した場合、DTS はタスクを再開します。複数のタスクが同じソースまたはターゲットを共有する場合、最も短い再試行時間が適用されます。再試行中も DTS インスタンスの料金は発生し続けます。
その他の問題に対する再試行時間有効範囲:1~1,440 分。デフォルト:10 分。10 分より大きい値を設定してください。接続失敗時の再試行時間よりも短くする必要があります。

自己管理 MongoDB の制約

ソースデータベースが自己管理 MongoDB インスタンスの場合、以下に注意してください:

制約詳細
プライマリ/セカンダリ スイッチオーバータスク実行中にソースでプライマリ/セカンダリ スイッチオーバーが発生した場合、タスクは失敗します。
同期レイテンシーの精度DTS は、ターゲットの最新同期データのタイムスタンプとソースの現在のタイムスタンプに基づいてレイテンシーを計算します。ソースで長期間更新がない場合、報告されるレイテンシーは不正確になる可能性があります。レイテンシーの読み取りをリセットするには、ソースで更新を実行してください。データベース全体を同期オブジェクトとして選択した場合、1 秒ごとに更新されるハートビートテーブルを作成できます。

データ同期タスクの設定

ステップ 1:データ同期タスクページへの移動

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

  2. 上部のナビゲーションバーで、[Data + AI] をクリックします。

  3. 左側のナビゲーションウィンドウで、[DTS (DTS)] > [データ同期] を選択します。

手順は DMS コンソールモードによって異なる場合があります。「シンプルモード」および「DMS コンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。新しい DTS コンソールのデータ同期タスクページに直接アクセスすることもできます。

ステップ 2:リージョンの選択

データ同期タスクの右側で、同期インスタンスが存在するリージョンを選択します。

新しい DTS コンソールでは、上部のナビゲーションバーからリージョンを選択します。

ステップ 3:ソースデータベースとターゲットデータベースの設定

[タスクの作成] をクリックします。タスクの作成ページで、以下の表で説明されているパラメーターを設定します。

警告

ソースデータベースとターゲットデータベースを設定した後、次に進む前にページに表示される制限事項をお読みください。このステップをスキップすると、タスクの失敗やデータの不整合が発生する可能性があります。

ソースデータベース

パラメーター説明
タスク名DTS タスクの名前。DTS はデフォルトの名前を生成します。タスクを識別しやすくするために、わかりやすい名前を指定してください。名前は一意である必要はありません。
DMS データベースインスタンスの選択既存のデータベースインスタンスを選択してパラメーターを自動入力するか、空白のままにして以下のパラメーターを手動で設定します。
データベースタイプ[MongoDB] を選択します。
アクセス方法[Alibaba Cloud インスタンス] を選択します。
インスタンスリージョンソースインスタンスが存在するリージョン。
Alibaba Cloud アカウント間でのデータレプリケーション同一アカウントでの同期の場合は [いいえ] を選択します。
アーキテクチャ[レプリカセット] を選択します。
インスタンス IDソースの ApsaraDB for MongoDB インスタンスの ID。
認証データベースアカウントの認証情報を保存するデータベース。デフォルト:admin
データベースアカウントソースデータベース、config データベース、admin データベース、および local データベースへの読み取りアクセス権を持つアカウント。
データベースパスワードデータベースアカウントのパスワード。
暗号化[非暗号化] または [SSL 暗号化] を選択します。このパラメーターはレプリカセットインスタンスにのみ適用されます。自己管理レプリカセットで [SSL 暗号化] を選択した場合、CA 証明書をアップロードして接続を検証できます。

ターゲットデータベース

パラメーター説明
DMS データベースインスタンスの選択既存のデータベースインスタンスを選択してパラメーターを自動入力するか、空白のままにして以下のパラメーターを手動で設定します。
データベースタイプ[MongoDB] を選択します。
アクセス方法[Alibaba Cloud インスタンス] を選択します。
インスタンスリージョンターゲットインスタンスが存在するリージョン。
アーキテクチャターゲットインスタンスのアーキテクチャ (レプリカセットまたはシャードクラスター)。
インスタンス IDターゲットの ApsaraDB for MongoDB インスタンスの ID。
認証データベースアカウントの認証情報を保存するデータベース。デフォルト:admin
データベースアカウントdbAdminAnyDatabase 権限、ターゲットデータベースへの読み書きアクセス権、および local データベースへの読み取りアクセス権を持つアカウント。
データベースパスワードデータベースアカウントのパスワード。
暗号化[非暗号化] または [SSL 暗号化] を選択します。このパラメーターはレプリカセットインスタンスにのみ適用されます。自己管理レプリカセットで [SSL 暗号化] を選択した場合、CA 証明書をアップロードして接続を検証できます。

ステップ 4:接続性テスト

[接続性をテストして続行] をクリックします。

DTS は、自動的にそのサーバーの CIDR ブロックを Alibaba Cloud データベースインスタンスのホワイトリスト、または ECS でホストされるデータベースのセキュリティグループルールに追加します。オンプレミスデータセンター内またはサードパーティプロバイダーがホストする自己管理データベースの場合、DTS サーバーの CIDR ブロックをデータベースのホワイトリストに手動で追加します。詳細については、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。

警告

DTS の CIDR ブロックをホワイトリストやセキュリティグループルールに追加すると、セキュリティリスクが生じます。続行する前に、強力な認証情報の使用、公開ポートの制限、API 呼び出しの認証、ホワイトリストルールの定期的な見直し、不正な CIDR ブロックの削除などの予防措置を講じてください。より高いセキュリティを確保するためには、パブリック IP アクセスを使用する代わりに、Express Connect、VPN Gateway、または SAG を介して接続してください。

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

以下のパラメーターを設定します:

パラメーター説明
同期タイプ[スキーマ同期][完全データ同期]、および [増分データ同期] を選択します。増分データ同期はデフォルトで選択されています。スキーマ同期と完全同期が最初に実行され、完全同期が完了した後に増分同期が開始されます。詳細については、「同期タイプ」をご参照ください。
競合するテーブルの処理モード事前チェックしてエラーを報告同期対象オブジェクトの名前変更:開始前にソースとターゲットで同じ名前のコレクションがあるかチェックします。競合が存在する場合、タスクは開始されません。名前の競合を解決するには、オブジェクト名マッピング機能を使用します。詳細については、「」をご参照ください。エラーを無視して続行:競合チェックをスキップします。ターゲットのレコードがソースのレコードと同じプライマリキーまたは一意キーの値を持つ場合、ターゲットのレコードが保持され、ソースのレコードはスキップされます。これにより、データの不整合が発生する可能性があります。
同期トポロジ[一方向同期] を選択します。
ターゲットインスタンスでのオブジェクト名の大文字/小文字送信先におけるデータベースおよびコレクション名の大文字小文字を制御します。デフォルト値: DTS デフォルトポリシー。詳細については、「オブジェクト名の大文字小文字の指定」をご参照ください。
ソースオブジェクト同期するデータベースまたはコレクションを選択し、向右 をクリックして [選択済みオブジェクト] に移動します。
選択済みオブジェクト単一のオブジェクトの名前を変更するには、そのオブジェクトを右クリックします。複数のオブジェクトを一度に名前変更するには、[一括編集] をクリックします。「オブジェクト名のマッピング」をご参照ください。WHERE 条件でデータをフィルターするには、オブジェクトを右クリックします。「フィルター条件の設定」をご参照ください。

ステップ 6:詳細設定の構成

[次へ:詳細設定] をクリックし、以下を設定します:

データ検証

詳細については、「データ検証を設定する」をご参照ください。

詳細設定

パラメーター説明
タスクスケジューリング用の専用クラスターデフォルトでは、DTS は共有クラスターを使用します。安定性を高めるには、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。
アラートの設定[いいえ]: アラートは発生しません。[はい]: アラートの設定。レイテンシーしきい値と通知連絡先を指定します。モニタリングとアラートの設定をご参照ください。
接続失敗時の再試行時間接続失敗後に DTS が再試行する時間。範囲:10~1,440 分。デフォルト:720 分。30 分より大きい値を設定してください。この期間内に接続が回復した場合、DTS はタスクを再開します。複数のタスクが同じソースまたはターゲットを共有する場合、最も短い再試行時間が適用されます。再試行中も DTS インスタンスの料金は発生し続けます。
その他の問題に対する再試行時間DDL または DML の失敗後に DTS が再試行する時間。範囲:1~1,440 分。デフォルト:10 分。10 分より大きい値を設定してください。接続失敗時の再試行時間よりも短くする必要があります。
完全データ移行のスロットリングを有効にする完全データ同期中のソースおよびターゲットへの読み書き負荷を制限します。[ソースデータベースへの 1 秒あたりのクエリ数 (QPS)][完全データ移行の RPS]、および [完全移行のデータ移行速度 (MB/s)] を設定します。[完全データ同期] が選択されている場合にのみ表示されます。
増分データ同期のスロットリングを有効にする増分同期中の負荷を制限します。[増分データ同期の RPS][増分同期のデータ同期速度 (MB/s)] を設定します。
環境タグDTS インスタンスを識別するためのタグ。オプション。
ETL の設定はい: 抽出・変換・書き出し (ETL) を有効化し、データ処理文を入力します。詳しくは、「ETL の設定」をご参照ください。いいえ: ETL をスキップします。ETL の概要については、「ETL とは何か」をご参照ください。

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

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

このタスクの OpenAPI パラメーターをプレビューするには、ボタンにカーソルを合わせ、クリックする前に [OpenAPI パラメーターのプレビュー] をクリックします。

DTS はタスク開始前に事前チェックを実行します。事前チェックが失敗した場合:

  • 失敗した各項目の横にある [詳細の表示] をクリックし、問題を解決してから [再度事前チェック] をクリックします。

  • 安全に無視できるアラート項目については、[アラート詳細の確認] > [無視] > [OK] をクリックし、その後 [再度事前チェック] をクリックします。アラートを無視すると、データの不整合が発生する可能性があります。

ステップ 8:事前チェックの完了を待つ

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

ステップ 9:同期インスタンスの購入

以下のパラメーターを設定します:

パラメーター説明
課金方法サブスクリプション:固定期間分を前払いします。長期利用の場合、よりコスト効率が良いです。従量課金:時間単位で課金されます。短期利用の場合、より柔軟です。不要になったらインスタンスをリリースして課金を停止します。
リソースグループ設定インスタンスのリソースグループ。デフォルト:[デフォルトリソースグループ]。詳細については、「Resource Management とは」をご参照ください。
インスタンスクラス同期速度はインスタンスクラスによって異なります。データ量とレイテンシ要件に基づいて選択してください。詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。
サブスクリプション期間サブスクリプション課金方法でのみ利用可能です。オプション:1~9 か月、1 年、2 年、3 年、または 5 年。

ステップ 10:タスクの開始

  1. [Data Transmission Service (従量課金) サービス規約] を読み、選択します。

  2. [購入して開始] をクリックします。

  3. 確認ダイアログで、[OK] をクリックします。

タスクがタスクリストに表示されます。そこから進捗を監視します。

次のステップ

よくある質問

  • データベースにデータを書き込んでいないのに、タスクのレイテンシーやデータの不整合が発生するのはなぜですか?

    • 原因:MongoDB コレクションの TTL インデックスの自動削除メカニズムと DTS のデータ同期メカニズムの間の競合が、同期または移行タスクでレイテンシーとデータの不整合を引き起こす可能性があります。

      • 増分書き込み中の DELETE 操作の欠落による効率低下:ソースインスタンスの TTL インデックスが期限切れのデータを削除すると、Oplog に DELETE レコードが生成されます。DTS はこの DELETE 操作を同期します。ターゲットインスタンスの TTL インデックスがすでに同じデータを削除している場合、DTS からの DELETE 操作は削除対象のデータを見つけられません。MongoDB エンジンは予期しない数の影響行を返し、これにより例外処理プロセスがトリガーされ、移行効率が低下します。

      • 期限切れデータの非同期削除によるデータの不整合:TTL インデックスはデータをリアルタイムで削除しません。期限切れのデータがターゲットインスタンスで既に削除されているにもかかわらず、ソースインスタンスにはまだ存在する可能性があります。これにより、データの不整合が発生します。

        例:

        MongoDB の Oplog または ChangeStream は、UPDATE 操作に対して更新されたフィールドのみを記録します。更新前後の完全なドキュメントは記録しません。したがって、UPDATE 操作がターゲットで対象データを見つけられない場合、DTS はその操作を無視します。

        タイミング

        ソースインスタンス

        ターゲットインスタンス

        1

        サービスがデータを挿入

        2

        DTS は INSERT 操作を同期します。

        3

        データは期限切れだが、TTL インデックスによってまだ削除されていない

        4

        サービスがデータを更新 (例:TTL インデックスフィールドを更新して有効期限を変更)

        5

        TTL インデックスがデータを削除

        6

        DTS が UPDATE を同期するが、データが見つからないため操作は無視される

        結果として、このドキュメントはターゲットの MongoDB インスタンスから欠落します。

    • 解決策:効率と一貫性を確保するために、同期または移行中にターゲットの TTL インデックスの有効期限を一時的に変更する必要があります。詳細については、「MongoDB がソースの場合に TTL インデックスを持つコレクションを同期/移行するためのベストプラクティス」をご参照ください。