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

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

最終更新日:Mar 14, 2025

Data Transmission Service (DTS) を使用すると、ApsaraDB for MongoDB シャードクラスターインスタンスから ApsaraDB for MongoDB レプリカセットまたはシャードクラスターインスタンスにデータを同期できます。このトピックでは、ApsaraDB for MongoDB インスタンス間でデータを同期する方法について説明します。

前提条件

  • 宛先 ApsaraDB for MongoDB レプリカセットまたはシャードクラスターインスタンスが作成されていること。詳細については、「レプリカセットインスタンスを作成する」または「シャードクラスターインスタンスを作成する」をご参照ください。

    重要
    • ソース ApsaraDB for MongoDB インスタンスのデータ総容量よりも 10% 多い利用可能なストレージ容量を持つ宛先 ApsaraDB for MongoDB インスタンスを使用することをお勧めします。

    • サポートされているインスタンスバージョンの詳細については、「データ同期シナリオの概要」をご参照ください。

  • ソース ApsaraDB for MongoDB シャードクラスターインスタンスのすべてのシャードノードにエンドポイントが割り当てられており、シャードノードは同じアカウントとパスワードを共有していること。エンドポイントの申請方法の詳細については、「シャードノードまたは ConfigServer ノードのエンドポイントを申請する」をご参照ください。

  • 宛先 ApsaraDB for MongoDB シャードクラスターインスタンスでは、シャーディングされるデータベースとコレクションが作成され、データシャーディングが構成され、バランサーが有効になり、ビジネス要件に基づいて事前シャーディングが実行されていること。詳細については、「シャーディングを構成してシャードのパフォーマンスを最大化する」および FAQ トピックの「シャードクラスターアーキテクチャにデプロイされた MongoDB データベースのデータが均等に分散されていない場合はどうすればよいですか?」セクションをご参照ください。

    説明
    • シャードクラスターインスタンスのシャーディングを構成すると、同期されたデータは異なるシャードに分散されます。これにより、シャードクラスターのパフォーマンスが最大化されます。また、バランサーを有効にして事前シャーディングを実行することで、データスキューを防ぐこともできます。

    • この例では、DTS インスタンスを購入する前に DTS タスクが構成されています。ソース ApsaraDB for MongoDB シャードクラスターインスタンスのシャード数を指定する必要はありません。

      DTS タスクを構成する前に DTS インスタンスを購入する場合は、インスタンスの購入時にシャード数を指定する必要があります。

    使用上の注意

    カテゴリ

    説明

    ソースデータベースとターゲットデータベースの制限

    • 帯域幅要件: ソースデータベースがデプロイされているサーバーには、十分なアウトバウンド帯域幅が必要です。十分な帯域幅がない場合、データ同期速度に影響します。

    • 同期するコレクションには、PRIMARY KEY または UNIQUE 制約が必要です。また、すべてのフィールドが一意である必要があります。そうでない場合、ターゲットデータベースに重複したデータレコードが含まれる可能性があります。

    • 同期するコレクションの _id フィールドは一意である必要があります。そうでない場合、データの不整合が発生する可能性があります。

    • 同期対象のオブジェクトとしてコレクションを選択し、ターゲットデータベース内のコレクションの編集(名前変更など)が必要な場合は、1 つのデータ同期タスクで最大 1,000 個のコレクションを同期できます。 1,000 個を超えるコレクションを同期するタスクを実行すると、リクエストエラーが発生します。この場合、複数タスクを設定してコレクションをバッチで同期するか、データベース全体を同期するタスクを設定することをお勧めします。

    • ソースデータベースから同期される単一のデータエントリのサイズは、16 MB を超えることはできません。超えると、タスクは失敗します。

    • ソースデータベースは、Azure Cosmos DB for MongoDB クラスタまたは Amazon DocumentDB エラスティッククラスターにすることはできません。

    • ソースデータベースでは oplog 機能を有効にし、ログデータを少なくとも 7 日間保持する必要があります。または、変更ストリームを有効にして、DTS が過去 7 日間のソースデータベースのデータ変更をサブスクライブできるようにする必要があります。有効にしないと、DTS がソースデータベースのデータ変更を取得できず、データ同期が失敗する可能性があります。状況によっては、データの不整合またはデータ損失が発生する可能性があります。このような状況で発生する問題は、DTS のサービスレベルアグリーメント(SLA)の対象外です。

      重要
      • ソースデータベースのデータ変更を記録するには、oplog を使用することをお勧めします。

      • MongoDB 4.0 以降でのみ、変更ストリームを使用してソースデータベースのデータ変更を取得できます。変更ストリームを使用してソースデータベースのデータ変更を取得する場合、双方向同期はサポートされていません。

      • ソースデータベースが非エラスティック Amazon DocumentDB クラスタの場合、変更ストリームを有効にし、移行方法 パラメーターを ChangeStream に、アーキテクチャ パラメーターを シャードクラスター に設定する必要があります。

    • データ同期タスクの実行中は、タスクに関連する MongoDB シャードクラスターデータベースをスケーリングできません。スケーリングすると、タスクは失敗します。

    • ソースデータベースがシャードクラスターアーキテクチャを使用する自主管理 MongoDB データベースの場合、DTS タスクを設定する際に、アクセス方法 パラメーターを Express Connect、VPN Gateway、または Smart Access Gateway または Cloud Enterprise Network (CEN) にのみ設定できます。

    • ソース MongoDB シャードクラスターデータベースの Mongos ノードの数は 10 を超えることはできません。

    • Time to Live (TTL) インデックスを含むコレクションは同期できません。ソースデータベースに TTL インデックスが含まれている場合、同期後にソースデータベースとターゲットデータベース間でデータの不整合が発生する可能性があります。

    • ソースデータベースとターゲットデータベースに孤立ドキュメントが存在しないことを確認してください。そうでない場合、データの不整合、またはタスクの失敗が発生する可能性があります。詳細については、「MongoDB 用語集」および「シャードクラスターアーキテクチャにデプロイされた MongoDB データベースの孤立ドキュメントを削除する方法」をご参照ください。

    • ソースデータベースで実行される操作の制限:

      • スキーマ同期と完全データ同期中は、配列型の更新を含め、データベースまたはコレクションのスキーマを変更しないでください。変更すると、データ同期タスクが失敗するか、ソースデータベースとターゲットデータベース間でデータの不整合が発生する可能性があります。

      • 完全データ同期のみを実行する場合は、データ同期中にソースデータベースにデータを書き込まないでください。書き込むと、ソースデータベースとターゲットデータベース間でデータの不整合が発生します。

    • ソースデータベースのバランサーがデータをバランシングするように有効になっている場合、DTS タスクが遅延する可能性があります。

    その他の制限

      • ターゲットデータベースがレプリカセットインスタンスの場合は、次の制限事項に注意してください。

        • ターゲットデータベースが [express Connect、vpn Gateway、または Smart Access Gateway][パブリック IP アドレス]、または [cloud Enterprise Network (CEN)] 経由で接続されている場合は、[ドメイン名または IP][ポート番号] をプライマリノードの IP アドレスとポート番号に設定するか、高可用性エンドポイントを設定します。高可用性エンドポイントの詳細については、「ソースデータベースまたはターゲットデータベースが高可用性 MongoDB データベースである DTS タスクを作成する」をご参照ください。

        • ターゲットデータベースが ECS 上の [自主管理データベース] 経由で接続されている場合は、[ポート番号] をプライマリノードのポート番号に設定します。

      • データ同期タスクを開始する前に、ソースデータベースの同期対象データにシャーディングキーを追加する必要があります。データ同期中に、INSERT 文を実行して同期対象データにデータを挿入する場合、同期対象データにはシャーディングキーが含まれている必要があります。 UPDATE 文を実行して同期対象データを変更する場合、シャーディングキーは変更できません。

      • 互換性を確保するために、ターゲット MongoDB データベースのバージョンは、ソース MongoDB データベースのバージョンと同じかそれ以上である必要があります。ターゲットデータベースのバージョンがソースデータベースのバージョンよりも古い場合、データベースの互換性の問題が発生する可能性があります。

      • DTS は admin データベースまたは local データベースからデータを同期できません。

      • トランザクション情報は保持されません。トランザクションがターゲットデータベースに同期されると、トランザクションは単一のレコードに変換されます。

      • データを同期する前に、データ同期がソースデータベースとターゲットデータベースのパフォーマンスに与える影響を評価してください。オフピーク時にデータを同期することをお勧めします。完全データ同期中、DTS はソースデータベースとターゲットデータベースの読み取りリソースと書き込みリソースを使用します。これにより、データベースサーバーの負荷が増加する可能性があります。

      • 完全データ同期中、同時 INSERT 操作を実行すると、ターゲットデータベースのコレクションで断片化が発生します。完全データ同期が完了した後、ターゲットデータベースのコレクションのストレージ容量は、ソースデータベースのストレージ容量よりも大きくなります。

      • ターゲットデータベースのコレクションに一意なインデックスがある場合、またはターゲットデータベースのコレクションの capped 属性が true の場合、コレクションはシングルスレッドデータ書き込みのみをサポートし、増分データ同期中の同時再生はサポートしません。これにより、同期遅延が増加する可能性があります。

      • データはターゲットデータベースに同時に書き込まれます。そのため、ターゲットデータベースで使用されるストレージ容量は、ソースデータベースのデータサイズよりも 5 ~ 10% 大きくなります。

      • db.$table_name.aggregate([{ $count:"myCount"}]) 構文を使用して、ターゲット MongoDB データベースでのカウント操作の戻り値をクエリする必要があります。

      • ターゲット MongoDB データベースにソースデータベースと同じプライマリキーがないことを確認してください。デフォルトのプライマリキーは _id です。同じプライマリキーが存在すると、データが失われる可能性があります。ターゲットデータベースのデータにソースデータベースと同じプライマリキーがある場合は、DTS のサービスを中断せずに、ターゲットデータベースの関連データをクリアしてください。たとえば、同じプライマリキーが _id の場合、ソースデータベースと同じ _id を持つターゲットデータベースのデータを削除できます。

      • 完全同期中は、ソースデータベースの MongoDB バランサーが無効になっていることを確認してください。すべての完全同期が完了し、増分同期が開始されるまで、バランサーを有効にしないでください。そうしないと、データの不整合が発生する可能性があります。MongoDB バランサーの詳細については、「ApsaraDB for MongoDB バランサーを管理する」をご参照ください。

      • ターゲットインスタンスにデータシャーディングが設定されていて、DTS のスキーマ同期機能を使用する必要がない場合は、オブジェクトの設定と詳細設定 ステップの 同期タイプ の 1 つとして スキーマ同期 を選択しないでください。選択すると、シャードの競合が原因でデータの不整合が発生したり、タスクが失敗したりする可能性があります。

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

        説明

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

    課金

    同期タイプタスク構成料金
    スキーマ同期と完全データ同期無料です。
    増分データ同期課金されます。詳細については、「課金の概要」をご参照ください。

    サポートされている一方向データ同期トポロジ

    DTS は、2 つの ApsaraDB for MongoDB シャードクラスターインスタンス間でのみ、一方向のデータ同期をサポートしています。DTS は、複数の ApsaraDB for MongoDB インスタンス間での一方向のデータ同期をサポートしていません。

    同期の種類

    同期の種類

    説明

    スキーマ同期

    DTS は、選択したオブジェクトのスキーマをソース ApsaraDB for MongoDB インスタンスから宛先 ApsaraDB for MongoDB インスタンスに同期します。

    完全データ同期

    DTS は、選択したオブジェクトの既存データをソース ApsaraDB for MongoDB インスタンスから宛先 ApsaraDB for MongoDB インスタンスに同期します。

    説明

    DTS は、データベースとコレクションの完全データ同期をサポートしています。

    増分データ同期

    DTS は、ソース ApsaraDB for MongoDB インスタンスから宛先 ApsaraDB for MongoDB インスタンスに増分データを同期します。

    oplog を使用する

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

    • CREATE COLLECTION および CREATE INDEX

    • DROP DATABASE、DROP COLLECTION、および DROP INDEX

    • RENAME COLLECTION

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

      説明

      DTS タスクがファイルの増分データを同期する場合、$set コマンドのみを同期的に実行できます。

    変更ストリームを使用する

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

    • DROP DATABASE および DROP COLLECTION

    • RENAME COLLECTION

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

      説明

      DTS タスクがファイルの増分データを同期する場合、$set コマンドのみを同期的に実行できます。

    孤立ドキュメントの削除

    データ同期を実行する前に、ソース MongoDB データベースから孤立ドキュメントを削除する必要があります。

    重要

    孤立ドキュメントを削除しないと、同期パフォーマンスが低下します。さらに、一部のドキュメントで _id 値が重複したり、同期したくないデータが同期されたりする可能性があります。

    ApsaraDB for MongoDB インスタンス

    説明

    メジャーバージョンが 4.2 より前、またはマイナーバージョンが 4.0.6 より前の ApsaraDB for MongoDB インスタンスから孤立ドキュメントを削除するためにクリーンアップスクリプトを実行すると、エラーが発生します。 ApsaraDB for MongoDB インスタンスの現在のバージョンの表示方法については、「ApsaraDB for MongoDB のマイナーバージョンのリリースノート」をご参照ください。 ApsaraDB for MongoDB インスタンスのマイナーバージョンまたはメジャーバージョンの更新方法については、「インスタンスのメジャーバージョンのアップグレード」および「インスタンスのマイナーバージョンの更新」をご参照ください。

    孤立ドキュメントを削除するには、cleanupOrphaned コマンドが必要です。このコマンドの実行方法は、MongoDB データベースのバージョンによって異なります。

    MongoDB 4.4 以降

    1. シャードクラスターインスタンスに接続できるサーバー上に、cleanupOrphaned.js という名前の JavaScript スクリプトファイルを作成します。

      説明

      このスクリプトは、複数のシャード内の複数のデータベースのすべてのコレクションから孤立ドキュメントを削除するために使用されます。特定のコレクションから孤立ドキュメントを削除する場合は、スクリプトファイル内の一部のパラメーターを変更できます。

      // シャードの名前。
      var shardNames = ["shardName1", "shardName2"];
      // 孤立ドキュメントを削除するデータベース。
      var databasesToProcess = ["database1", "database2", "database3"];
      
      shardNames.forEach(function(shardName) {
          // 指定されたデータベースを走査する。
          databasesToProcess.forEach(function(dbName) {
              var dbInstance = db.getSiblingDB(dbName);
              // 指定されたデータベースのすべてのコレクション名を取得する。
              var collectionNames = dbInstance.getCollectionNames();
              
              // すべてのコレクションを走査する。
              collectionNames.forEach(function(collectionName) {
                  // 完全なコレクション名。
                  var fullCollectionName = dbName + "." + collectionName;
                  // cleanupOrphaned コマンドをビルドする。
                  var command = {
                      runCommandOnShard: shardName,
                      command: { cleanupOrphaned: fullCollectionName }
                  };
      
                  // cleanupOrphaned コマンドを実行する。
                  var result = db.adminCommand(command); 
                  if (result.ok) {
                      print("シャード " + shardName + " 上のコレクション " + fullCollectionName + " の孤立ドキュメントをクリーンアップしました");
                      printjson(result);
                  } else {
                      print("シャード " + shardName + " 上のコレクション " + fullCollectionName + " の孤立ドキュメントのクリーンアップに失敗しました");
                  }
              });
          });
      });

      スクリプトファイル内の shardNames パラメーターと databasesToProcess パラメーターを変更する必要があります。以下の内容は、2 つのパラメーターについて説明しています。

      • shardNames: 孤立ドキュメントを削除するシャードの ID。ID は、シャードクラスターインスタンスの [基本情報] ページの [シャードリスト] セクションで確認できます。例: d-bp15a3796d3a****

      • databasesToProcess: 孤立ドキュメントを削除するデータベースの名前。

    2. cleanupOrphaned.js スクリプトファイルが保存されているディレクトリで、次のコマンドを実行します。

      mongo --host <Mongoshost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt

      次の表は、設定できるパラメーターについて説明しています。

      パラメーター

      説明

      <Mongoshost>

      シャードクラスターインスタンスの Mongos ノードのエンドポイント。形式: s-bp14423a2a51****.mongodb.rds.aliyuncs.com

      <Primaryport>

      シャードクラスターインスタンスの Mongos ノードのポート番号。デフォルト値: 3717。

      <database>

      データベースアカウントが属するデータベースの名前。

      <username>

      データベースアカウント。

      <password>

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

      output.txt

      実行結果を保存するために使用される output.txt ファイル。

    MongoDB 4.2 以前

    1. シャードクラスターインスタンスに接続できるサーバー上に、cleanupOrphaned.js という名前の JavaScript スクリプトファイルを作成します。

      説明

      このスクリプトは、複数のシャード内のデータベースの特定のコレクションから孤立ドキュメントを削除するために使用されます。複数のコレクションから孤立ドキュメントを削除する場合は、スクリプトファイル内の fullCollectionName パラメーターを変更して、スクリプトを複数回実行します。または、すべてのコレクションを走査するようにスクリプトファイルを変更することもできます。

      function cleanupOrphanedOnShard(shardName, fullCollectionName) {
          var nextKey = { };
          var result;
      
          while ( nextKey != null ) {
              var command = {
                  runCommandOnShard: shardName,
                  command: { cleanupOrphaned: fullCollectionName, startingFromKey: nextKey }
              };
      
              result = db.adminCommand(command);
              printjson(result);
      
              if (result.ok != 1 || !(result.results.hasOwnProperty(shardName)) || result.results[shardName].ok != 1 ) {
                  print("現時点では完了できません: 失敗またはタイムアウト。")
                  break
              }
      
              nextKey = result.results[shardName].stoppedAtKey;
          }
      
          print("coll: " + fullCollectionName + " on shard: " + shardName + " の cleanupOrphaned が完了しました")
      }
      
      var shardNames = ["shardName1", "shardName2", "shardName3"]
      var fullCollectionName = "database.collection"
      
      shardNames.forEach(function(shardName) {
          cleanupOrphanedOnShard(shardName, fullCollectionName);
      });

      スクリプトファイル内の shardNames パラメーターと fullCollectionName パラメーターを変更する必要があります。以下の内容は、2 つのパラメーターについて説明しています。

      • shardNames: 孤立ドキュメントを削除するシャードの ID。ID は、シャードクラスターインスタンスの [基本情報] ページの [シャードリスト] セクションで確認できます。例: d-bp15a3796d3a****

      • fullCollectionName: このパラメーターは、孤立ドキュメントを削除するコレクションの名前に置き換える必要があります。形式: データベース名.コレクション名

    2. cleanupOrphaned.js スクリプトファイルが保存されているディレクトリで、次のコマンドを実行します。

      mongo --host <Mongoshost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt

      次の表は、設定できるパラメーターについて説明しています。

      パラメーター

      説明

      <Mongoshost>

      シャードクラスターインスタンスの Mongos ノードのエンドポイント。形式: s-bp14423a2a51****.mongodb.rds.aliyuncs.com

      <Primaryport>

      シャードクラスターインスタンスの Mongos ノードのポート番号。デフォルト値: 3717。

      <database>

      データベースアカウントが属するデータベースの名前。

      <username>

      データベースアカウント。

      <password>

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

      output.txt

      実行結果を保存するために使用される output.txt ファイル。

    自主管理 MongoDB データベース

    1. 自主管理 MongoDB データベースに接続できるサーバーに、cleanupOrphaned.js スクリプトファイルをダウンロードします。

      wget "https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120562/cn_zh/1564451237979/cleanupOrphaned.js"
    2. testcleanupOrphaned.js ファイル内で、孤立ドキュメントを削除するデータベースの名前に置き換えます。

      重要

      複数のデータベースから孤立ドキュメントを削除する場合は、ステップ 2 とステップ 3 を繰り返します。

    3. シャード上で次のコマンドを実行して、指定されたデータベースのすべてのコレクションから孤立ドキュメントを削除します。

      説明

      この手順は、シャードごとに繰り返す必要があります。

      mongo --host <Shardhost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js
      説明
      • <Shardhost>: シャードの IP アドレス。

      • <Primaryport>: シャード内のプライマリノードのサービスポート。

      • <database>: データベースアカウントが属するデータベースの名前。

      • <username>: 自主管理 MongoDB データベースにログインするために使用するアカウント。

      • <password>: 自主管理 MongoDB データベースにログインするために使用するパスワード。

      例:

      この例では、自主管理 MongoDB データベースに 3 つのシャードがあり、各シャードから孤立ドキュメントを削除する必要があります。

      mongo --host 172.16.1.10 --port 27018  --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
      mongo --host 172.16.1.11 --port 27021 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
      mongo --host 172.16.1.12 --port 27024  --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js

    使用上の注意

    重要

    この例では、DTS タスクは DTS インスタンスを購入する前に構成されています。ソース ApsaraDB for MongoDB シャードクラスターインスタンスのシャード数を指定する必要はありません。

    DTS タスクを構成する前に DTS インスタンスを購入する場合は、インスタンスの購入時にシャード数を指定する必要があります。

    1. 次のいずれかの方法でデータ同期ページに移動し、データ同期インスタンスが存在するリージョンを選択します。

      DTS コンソール

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

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

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

      DMS コンソール

      説明

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

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

      2. 上部のナビゲーションバーで、[データ開発] にポインタを移動し、[DTS (DTS)] > [データ同期] を選択します。

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

    2. タスクの作成 をクリックして、タスク構成ページに移動します。

    3. オプション。 ページの右上隅にある 新バージョンの設定ページを試してみる をクリックします。

      説明
      • ページの右上隅に 旧バージョンの設定ページに戻る ボタンが表示されている場合は、この手順をスキップします。

      • 構成ページの新バージョンと旧バージョンでは、特定のパラメータが異なる場合があります。 新しいバージョンの構成ページを使用することをお勧めします。

    4. ソースデータベースとターゲットデータベースを構成します。 次の表にパラメータを示します。

      セクション

      パラメータ

      説明

      該当なし

      タスク名

      DTS タスクの名前。 DTS はタスク名を自動的に生成します。 タスクを識別しやすい説明的な名前を指定することをお勧めします。 一意のタスク名を指定する必要はありません。

      移行元データベース

      [既存の接続を選択]

      使用するデータベース。 業務要件に基づいて既存のデータベースを使用するかどうかを選択できます。

      • 既存のデータベースを選択すると、DTS はデータベースのパラメータを自動的に入力します。

      • 既存のデータベースを選択しない場合は、次のデータベース情報を構成する必要があります。

      説明

      データベースタイプ

      ソースデータベースの種類。 MongoDB を選択します。

      アクセス方法

      ソースデータベースのアクセス方法。 Alibaba Cloud インスタンス を選択します。

      インスタンスのリージョン

      ソース ApsaraDB for MongoDB インスタンスが存在するリージョン。

      Alibaba Cloud アカウント間でデータを複製

      この例では、現在の Alibaba Cloud アカウントのデータベースが使用されます。 × を選択します。

      アーキテクチャ

      ソースインスタンスがデプロイされているアーキテクチャ。 シャードクラスター を選択します。

      [移行方法]

      ソースデータベースから増分データを同期するために使用される方法。 業務要件に基づいて方法を選択します。 有効値:

      • Oplog (推奨):

        このオプションは、ソースデータベースで oplog 機能が有効になっている場合に利用できます。

        説明

        デフォルトでは、oplog 機能は自主管理 MongoDB データベースと ApsaraDB for MongoDB インスタンスの両方で有効になっています。この機能を使用すると、ログのプル速度が速いため、低レイテンシで増分データを同期できます。そのため、移行方法パラメーターには Oplog を選択することをお勧めします。

      • ChangeStream:

        このオプションは、ソースデータベースで変更ストリームが有効になっている場合に利用できます。 詳細については、変更ストリーム を参照してください。

        説明
        • ソースデータベースが拡張性のない Amazon DocumentDB クラスタの場合、[ChangeStream] にのみ Migration Method パラメーターを設定できます。

        • シャードクラスター を [アーキテクチャ パラメータに選択した場合、Shardアカウント パラメータと Shardパスワード パラメータを構成する必要はありません。

      インスタンス ID

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

      認証データベース

      ソース ApsaraDB for MongoDB インスタンスのデータベースアカウントとパスワードを格納する認証データベースの名前。認証データベースの名前を以前に変更していない場合は、デフォルト値 admin が使用されます。

      データベースアカウント

      ソース ApsaraDB for MongoDB インスタンスのデータベースアカウント。アカウントには、ソースデータベース、config データベース、admin データベース、および local データベースに対する読み取り権限が必要です。

      データベースのパスワード

      データベースへのアクセスに使用されるパスワード。

      Shardアカウント

      ソースの ApsaraDB for MongoDB インスタンスのシャードノードへのアクセスに使用するアカウント。

      説明

      ソースデータベースが自己管理 MongoDB データベースの場合、シャードへのアクセスに使用される情報を指定する必要があります。

      Shardパスワード

      ソース ApsaraDB for MongoDB インスタンスのシャードノードへのアクセスに使用するパスワード。

      移行先データベース

      [暗号化]

      ソースデータベースへの接続を暗号化するかどうかを指定します。 業務要件に基づいて、非暗号化SSL 暗号化、または Mongo Atlas SSL を選択できます。 暗号化 パラメータで使用できるオプションは、アクセス方法 パラメータと アーキテクチャ パラメータに選択された値によって決まります。 DTS コンソールに表示されるオプションが優先されます。

      説明
      • [アーキテクチャ] パラメーターが [シャーディングクラスタ] に設定され、[移行方法] パラメーターが ApsaraDB for MongoDB データベースに対して Oplog に設定されている場合、SSL 暗号化 パラメーターは使用できません。

      • ソースデータベースが レプリカセット アーキテクチャを使用する自己管理 MongoDB データベースであり、アクセス方法 パラメータが Alibaba Cloud インスタンス に設定されておらず、[暗号化] パラメータが SSL 暗号化 に設定されている場合、認証局 (CA) 証明書をアップロードして、ソースデータベースへの接続を検証できます。

      [既存の接続を選択]

      使用するデータベース。 業務要件に基づいて既存のデータベースを使用するかどうかを選択できます。

      • 既存のデータベースを選択すると、DTS はデータベースのパラメータを自動的に入力します。

      • 既存のデータベースを選択しない場合は、次のデータベース情報を構成する必要があります。

      説明

      データベースタイプ

      ターゲットデータベースの種類。 MongoDB を選択します。

      アクセス方法

      ターゲットデータベースのアクセス方法。 Alibaba Cloud インスタンス を選択します。

      インスタンスのリージョン

      宛先 ApsaraDB for MongoDB インスタンスが存在するリージョン。

      [alibaba Cloud アカウント間でデータを複製する]

      この例では、現在の Alibaba Cloud アカウントのデータベースが使用されます。 × を選択します。

      アーキテクチャ

      デスティネーション ApsaraDB for MongoDB インスタンスがデプロイされているアーキテクチャ。

      インスタンス ID

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

      認証データベース

      宛先 ApsaraDB for MongoDB インスタンスのデータベースアカウントとパスワードを格納する認証データベースの名前。認証データベースの名前を以前に変更していない場合は、デフォルト値 admin が使用されます。

      データベースアカウント

      ターゲット ApsaraDB for MongoDB インスタンスのデータベースアカウント。アカウントには、 dbAdminAnyDatabase 権限、ターゲットデータベースに対する読み取りおよび書き込み権限、ローカルデータベースに対する読み取り権限が必要です。

      データベースのパスワード

      データベースへのアクセスに使用されるパスワード。

      暗号化

      ターゲットデータベースへの接続を暗号化するかどうかを指定します。 業務要件に基づいて、非暗号化SSL 暗号化、または Mongo Atlas SSL を選択できます。 暗号化 パラメータで使用できるオプションは、アクセス方法 パラメータと アーキテクチャ パラメータに選択された値によって決まります。 DTS コンソールに表示されるオプションが優先されます。

      説明
      • ターゲットデータベースが ApsaraDB for MongoDB インスタンスであり、[アーキテクチャ] パラメータが [シャーディングクラスター] に設定されている場合、[暗号化] パラメータ SSL 暗号化 は使用できません。

      • ターゲットデータベースがレプリカセット アーキテクチャを使用する自主管理 MongoDB データベースであり、アクセス方法 パラメーターが Alibaba Cloud インスタンス に設定されておらず、[暗号化] パラメーターが SSL 暗号化 に設定されている場合は、ターゲットデータベースへの接続を検証するために CA 証明書をアップロードできます。

    5. ページの下部にある 接続をテストして続行 をクリックします。

      説明
      • DTS サーバーの CIDR ブロックをソースデータベースとターゲットデータベースのセキュリティ設定に自動または手動で追加して、DTS サーバーからのアクセスを許可できるようにしてください。 詳細については、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。

      • ソースデータベースまたはターゲットデータベースが自己管理データベースであり、その アクセス方法Alibaba Cloud インスタンス に設定されていない場合は、DTS サーバーの CIDR ブロック ダイアログボックスの 接続テスト をクリックします。

    6. 同期するオブジェクトを構成します。

      1. オブジェクト設定 手順で、同期するオブジェクトを構成します。

        パラメータ

        説明

        同期タイプ

        同期タイプ。 デフォルトでは、[増分データ同期] が選択されています。 [スキーマ同期][完全データ同期] も選択する必要があります。 事前チェックが完了すると、DTS は選択したオブジェクトの既存データをソースデータベースからターゲットクラスターに同期します。 既存データは、後続の増分同期の基礎となります。

        説明

        同期の種類の詳細については、このトピックの「同期の種類」セクションをご参照ください。

        競合テーブルの処理モード

        • エラーの事前チェックと報告: ターゲットデータベースにソースデータベースのコレクションと同じ名前のコレクションが含まれているかどうかを確認します。 ソースデータベースとターゲットデータベースに同一のコレクション名を持つコレクションが含まれていない場合、事前チェックは合格です。 それ以外の場合、事前チェック中にエラーが返され、データ同期タスクを開始できません。

          説明

          ソースデータベースとターゲットデータベースに同じ名前のコレクションがあり、ターゲットデータベースのコレクションを削除または名前変更できない場合は、オブジェクト名マッピング機能を使用して、ターゲットデータベースに同期されるコレクションの名前を変更できます。 詳細については、「同期するオブジェクトの名前を変更する」をご参照ください。

        • エラーを無視して続行: ソースデータベースとターゲットデータベースで同一のコレクション名に対する事前チェックをスキップします。

          警告

          エラーを無視して続行 を選択すると、データの不整合が発生し、ビジネスが潜在的なリスクにさらされる可能性があります。

          • ターゲットデータベースのデータレコードのプライマリキー値または一意キー値がソースデータベースのデータレコードと同じである場合、DTS はデータレコードをターゲットデータベースに同期しません。 ターゲットデータベースの既存のデータレコードは保持されます。

          • データの初期化に失敗したり、特定の列のみが同期されたり、データ同期タスクが失敗したりする可能性があります。

        [同期トポロジ]

        同期トポロジ。 [一方向同期] を選択します。

        宛先インスタンスでのオブジェクト名の大文字化

        ターゲットインスタンスのデータベース名とコレクション名の大文字と小文字の区別。 デフォルトでは、[DTS デフォルトポリシー] が選択されています。 ソースデータベースまたはターゲットデータベースのオブジェクト名のデフォルトの大文字小文字の規則と一致するように、他のオプションを選択できます。 詳細については、「ターゲットインスタンスのオブジェクト名の大文字と小文字の区別を指定する」をご参照ください。

        ソースオブジェクト

        ソースオブジェクト セクションから 1 つ以上のオブジェクトを選択し、向右 アイコンをクリックして、選択中のオブジェクト セクションにオブジェクトを追加します。

        説明

        データベースまたはコレクションを同期するオブジェクトとして選択できます。

        [選択済みオブジェクト]

        • ターゲットデータベースで同期するオブジェクトの名前を変更するには、選択中のオブジェクト セクションでオブジェクトを右クリックします。 詳細については、「オブジェクト名をマッピングする」をご参照ください。

        • 選択したオブジェクトを削除するには、選択中のオブジェクト セクションでオブジェクトをクリックし、image アイコンをクリックして、ソースオブジェクト セクションにオブジェクトを移動します。

        説明
        • データベースまたはコレクションごとに増分データを同期するには、選択中のオブジェクト を右クリックし、表示されるダイアログボックスで操作を選択します。

        • 同期するテーブルのデータをフィルタリングするには、選択中のオブジェクト セクションでテーブルを右クリックします。 表示されるダイアログボックスで、フィルタ条件を構成します。 データ同期タスクの完全データ同期ステージ中にデータをフィルタリングする条件を指定できます。 データ同期タスクの増分データ同期ステージ中にデータをフィルタリングする条件を指定することはできません。 詳細については、「フィルタ条件を指定する」をご参照ください。

        • オブジェクト名マッピング機能を使用して、データの同期先であるデータベースまたはコレクションの名前を変更すると、そのデータベースまたはコレクションに依存する他のオブジェクトの同期に失敗する可能性があります。

      2. 次へ:詳細設定 をクリックして、詳細設定を構成します。

        パラメータ

        説明

        タスクのスケジュールに使用する専用クラスターの選択

        デフォルトでは、専用クラスターを指定しない場合、DTS はタスクを共有クラスターにスケジュールします。 データ同期タスクの安定性を向上させるには、専用クラスターを購入します。 詳細については、「DTS 専用クラスターとは」をご参照ください。

        失敗した接続の再試行時間

        接続失敗時の再試行時間の範囲。 データ同期タスクの開始後にソースデータベースまたはターゲットデータベースへの接続に失敗した場合、DTS は指定された時間範囲内で直ちに接続を再試行します。 有効値: 10 ~ 1440。 単位: 分。 デフォルト値: 720。 このパラメータには 30 より大きい値を設定することをお勧めします。 DTS が指定された時間範囲内にソースデータベースとターゲットデータベースに再接続すると、DTS はデータ同期タスクを再開します。 それ以外の場合、データ同期タスクは失敗します。

        説明
        • 同じソースデータベースまたはターゲットデータベースを持つ複数のデータ同期タスクに異なる再試行時間の範囲を指定した場合、最も短い再試行時間の範囲が優先されます。

        • DTS が接続を再試行すると、DTS インスタンスの料金が発生します。 業務要件に基づいて再試行時間の範囲を指定することをお勧めします。 また、ソースインスタンスとターゲットインスタンスが解放された後、できるだけ早く DTS インスタンスを解放することもできます。

        移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。

        その他の問題の再試行時間の範囲。 たとえば、データ同期タスクの開始後に DDL または DML 操作の実行に失敗した場合、DTS は指定された時間範囲内で直ちに操作を再試行します。 有効値: 1 ~ 1440。 単位: 分。 デフォルト値: 10。 このパラメータには 10 より大きい値を設定することをお勧めします。 失敗した操作が指定された時間範囲内に正常に実行されると、DTS はデータ同期タスクを再開します。 それ以外の場合、データ同期タスクは失敗します。

        重要

        移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 パラメータの値は、失敗した接続の再試行時間 パラメータの値よりも小さくなければなりません。

        完全移行率を制限するかどうか

        完全データ同期中、DTS はソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを使用します。 これにより、データベースサーバーの負荷が増加する可能性があります。 完全データ同期タスクの 1 秒あたりのソースデータベースのクエリ率 QPS1 秒あたりの完全移行の行数 RPS、および 1 秒あたりの完全移行データ量 (MB) BPS パラメータを構成して、ターゲットデータベースサーバーの負荷を軽減できます。

        説明

        このパラメータは、同期タイプ パラメータで 完全データ同期 が選択されている場合にのみ表示されます。

        [単一テーブルのプライマリキー _id に対して 1 つのデータ型のみ]

        同期されるデータのコレクションのプライマリキー _id のデータ型が一意かどうか。 有効値:

        説明

        このパラメータは、[同期タイプ] パラメータで [完全データ同期] が選択されている場合にのみ表示されます。

        • [はい]: データ型が一意です。 完全データ同期中、DTS はソースデータベースから同期されるデータのプライマリキー _id のデータ型をスキャンしません。

        • [いいえ]: データ型が一意ではありません。 完全データ同期中、DTS はソースデータベースから同期されるデータのプライマリキー _id のデータ型をスキャンします。

        増分同期率を制限するかどうか

        増分データ同期の速度制限を有効にするかどうかを指定します。 業務要件に基づいて、増分データ同期の速度制限を有効にできます。 速度制限を構成するには、1 秒あたりの増分同期の行数 RPS パラメータと 1 秒あたりの増分同期データ量 (MB) BPS パラメータを構成する必要があります。 これにより、ターゲットデータベースサーバーの負荷が軽減されます。

        環境タグ

        DTS インスタンスを識別するために使用される環境タグ。 業務要件に基づいて環境タグを選択できます。 この例では、このパラメータを構成する必要はありません。

        ETL の設定

        抽出、変換、書き出し (ETL) 機能を有効にするかどうかを指定します。 詳細については、「ETL とは」をご参照ください。 有効値:

        監視アラート

        データ同期タスクのアラートを構成するかどうかを指定します。 タスクが失敗した場合、または同期レイテンシが指定されたしきい値を超えた場合、アラート連絡先に通知が送信されます。 有効値:

        • [いいえ]: アラートを有効にしません。

        • [はい]: アラートを設定します。この場合、アラートのしきい値と アラート通知設定 も構成する必要があります。詳細については、「DTS タスクの作成時にモニタリングとアラートを構成する」セクションのモニタリングとアラートを構成する Topic をご参照ください。

      3. [次のステップ: データ検証] をクリックして、データ検証を構成します。

        データ検証機能の使用方法の詳細については、「データ検証タスクを構成する」をご参照ください。

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

      • DTS タスクを構成するために関連する API 操作を呼び出すときに指定するパラメータを表示するには、次:タスク設定の保存と事前チェック にポインタを移動し、OpenAPI パラメーターのプレビュー をクリックします。

      • パラメータを表示する必要がない場合、またはすでに表示している場合は、ページの下部にある 次:タスク設定の保存と事前チェック をクリックします。

      説明
      • データ同期タスクを開始する前に、DTS は事前チェックを実行します。 データ同期タスクは、タスクが事前チェックに合格した後にのみ開始できます。

      • データ同期タスクが事前チェックに合格しない場合は、失敗した各項目の横にある [詳細の表示] をクリックします。 チェック結果に基づいて原因を分析した後、問題をトラブルシューティングします。 その後、事前チェックを再実行します。

      • 事前チェック中に項目に対してアラートがトリガーされた場合:

        • アラート項目を無視できない場合は、失敗した項目の横にある [詳細の表示] をクリックして、問題をトラブルシューティングします。 その後、事前チェックを再実行します。

        • アラート項目を無視できる場合は、[アラート詳細の確認] をクリックします。 [詳細の表示] ダイアログボックスで、[無視] をクリックします。 表示されるメッセージで、[OK] をクリックします。 その後、[再チェック] をクリックして、事前チェックを再実行します。 アラート項目を無視すると、データの不整合が発生し、ビジネスが潜在的なリスクにさらされる可能性があります。

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

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

      2. [購入] ページで、データ同期インスタンスの [課金方法] パラメータと [インスタンスクラス] パラメータを構成します。 次の表にパラメータを示します。

        セクション

        パラメータ

        説明

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

        課金方法

        • サブスクリプション: データ同期インスタンスを作成するときにサブスクリプション料金を支払います。 サブスクリプション課金方法は、長期使用の場合、従量課金方法よりも費用対効果が高くなります。

        • 従量課金: 従量課金インスタンスは時間単位で課金されます。 従量課金方法は、短期使用に適しています。 従量課金データ同期インスタンスが不要になった場合は、インスタンスを解放してコストを削減できます。

        リソースグループ設定

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

        インスタンスクラス

        DTS は、同期速度が異なるインスタンスクラスを提供します。 業務要件に基づいてインスタンスクラスを選択できます。 詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。

        サブスクリプション期間

        サブスクリプション課金方法を選択した場合は、サブスクリプション期間と作成するデータ同期インスタンスの数を指定します。 サブスクリプション期間は、1 ~ 9 か月、1 年、2 年、3 年、または 5 年です。

        説明

        このパラメータは、サブスクリプション 課金方法を選択した場合にのみ使用できます。

      3. [データ伝送サービス (従量課金) サービス規約] を読んで選択します。

      4. [購入して開始] をクリックします。 表示されるダイアログボックスで、OK をクリックします。

        タスクリストでタスクの進捗状況を確認できます。