Docs Menu
Docs Home
/
MongoDB Cluster-to-Cluster Sync
/

制限

項目一覧

  • 一般的な制限
  • MongoDB コミュニティ エディション
  • サポートされていないコレクションのタイプ
  • シャーディングされたクラスター
  • 元に戻す
  • 複数のクラスター
  • フィルタリングされた同期
  • 上限付きコレクション
  • システム コレクション
  • ローリング処理によるインデックスビルド
  • 埋め込み検証子

警告

mongosync は、ドキュメント化された制限への準拠の有無はチェックしません。アプリケーションが制限の影響を受けないことを確認してください。以下の制限のいずれかが課されている状態で mongosync を実行すると、対象クラスターで予期しない動作が発生する恐れがあります。

移行が一時停止または再開される場合に停止されるときを含め、移行の全期間にわたってこれらの制限に従う必要があります。

注意

MongoDBサーバーの互換性の詳細については、「 MongoDB Serverのバージョンの互換性 」を参照してください。

  • mongosync は、移行中にメジャー バージョンまたはマイナー バージョンを変更するインプレースサーバーバージョンmongosync アップグレードをサポートしていません。 ではパッチ バージョンのアップグレードは可能です。詳しくは、 サーバーのアップグレード手順を参照してください。

  • 宛先クラスターは空である必要があります。

  • mongosync は、クラスターまたは環境が正しく構成されているかどうかを検証しません。

  • mongosyncの実行中は、他のクライアントが宛先クラスターに書き込みを行わないでください。

  • コミット プロセスを開始し、enableUserWriteBlocking truestartエンドポイントを使用したときに を に設定しなかった場合は、コミット プロセスを開始する前にソースクラスターへの書込みを防ぐ必要があります。

  • system.* コレクションは複製されません。

  • ドル記号( $ )のプレフィックスがついたフィールド名はサポートされていません。 「ピリオドとドル記号を含むフィールド名 」を参照してください。

  • サーバーレス クラスターはサポートされていません。

  • MongoDB 共有階層はサポートされていません。

  • Queryable Encryptionはサポートされていません。

  • 同じフィールドに一意なインデックスと一意でないインデックスが定義されているコレクションを同期することはできません。

  • M10+ Atlas クラスターでmongosyncを実行する前に、 Require Indexes for All Queriesオプションを無効にします。

  • mongosync ユーザーまたはロールは同期されません。

  • mongosync は、宛先クラスターへの同期中にソースクラスターで行われたapplyOps操作を複製しません。

  • mongosync は、 primary読み込み設定(read preference)を使用してソースクラスターから読み取る必要があります。

  • mongosync は、現在 MongoDB バージョンをアップグレードしているソースクラスターまたは宛先クラスターはサポートしていません。

  • mongosync では、 Atlas Search インデックスの同期はサポートされていません。

  • mongosync は、 WiredTigerストレージエンジンを使用するクラスターのみをサポートします。

  • 6.0 より前のソースクラスターの Timestamp(0,0) など、空のタイムスタンプを持つドキュメントとコレクションを同期することはできません。

MongoDB は、Community のビルドを使用した Cluster-to-Cluster Sync をテストしておらず、ほとんどの場合、MongoDB は Community を使用した Cluster-to-Cluster Sync のサポートを提供していません。 MongoDB Community Edition で Cluster-to-Cluster Sync を使用する場合は、MongoDB の営業担当者に問い合わせて、要件や個別のオプションについて説明してください。

  • 時系列コレクションはサポートされていません。

  • expireAfterSecondsが設定されたクラスター化されたコレクションはサポートされていません。

  • mongosync では、シャーディングされたクラスターからレプリカセットへの同期はサポートされていません。

  • mongosync では、1 つ以上のアービタを持つシャーディングされたクラスター トポロジーへの同期はサポートされていません。

  • mongosync では、グローバルクラスターとの間の同期はサポートされていません。

  • レプリカセットからシャーディングされたクラスターへの同期には次の制限があります。

    • mongosync を使用すると、同期中にsharding.shardingEntriesオプションに含まれるコレクションの名前を変更できます。 詳細については、「同期中の名前の変更 」を参照してください。

    • sharding.createSupportingIndexesオプションを使用すると、同期中に宛先クラスターにインデックスが自動的に作成されます。 ソースクラスターでは、その後にこれらのインデックスを作成することはできません。

    • シャードキーをサポートするインデックスを手動で作成する場合は、 mongosyncが開始する前、または移行が完了してmongosyncが停止した後にインデックスを作成する必要があります。

  • コレクション内では、 _idフィールドはクラスター内のすべてのシャードで一意である必要があります。 See Sharded Clusters and Unique Indexes for more details.

  • 同期中にプライマリシャードを再割り当てするために、 movePrimaryコマンドは使用できません。

  • ゾーン構成のレプリケーションはありません。 mongosyncはデータをレプリケートしますが、ゾーンは継承しません。

  • 同期中にシャードを追加または削除することはできません。

  • mongosync は、すべてのシャードに存在するインデックスのみを同期します。

  • mongosync は、すべてのシャードで一貫したインデックス仕様を持つインデックスのみを同期します。

  • 移行が行われるまで、シャーディングされたソースクラスターと宛先クラスターのバランサーを停止する必要があります。 バランサーを停止するには、 balancerStopコマンドを実行し、コマンドが完了するまで待ちます。

    注意

    バランサーを停止した後、15 分間待ってからmongosyncを起動します。 これにより、進行中の チャンク移行 を完了するためのクラスター時間が得られます。

  • ソースクラスターまたは宛先クラスターでは、 moveChunk } コマンドとmoveRangeコマンドは実行しないでください。

  • 同期中にシャードキーを調整することはできません。

  • ソースクラスターからのreshardCollection操作は同期中はサポートされていません。

  • シャーディングされたコレクションあたりのインデックスの最大数は63で、デフォルトの上限である64より 1 つ下です。

  • mongosync は、デフォルトの照合設定を持つシャーディングされたコレクションの同期のみをサポートします。

  • 古いソースに、シャード間で部分的に分散された一意なインデックスがある場合、元に戻すと失敗する可能性があります。 元に戻す前に、すべてのシャードに一意なインデックスがあることを確認してください。

  • ソースクラスターと宛先クラスターは同じ数のシャードを持つ必要があります。 クラスターのトポロジーまたはメジャー バージョンが異なる場合、逆同期はできません。

  • mongosync では、1 つの宛先クラスターへの複数のソースクラスターの同期はサポートされていません。

  • 1 つのクラスターを同時に 1 つのmongosyncインスタンスでソースクラスターにし、別のmongosyncインスタンスの宛先クラスターにすることはできません。

  • フィルタリングは、元の同期ではサポートされていません。

  • 起動前に、宛先クラスターにはユーザー データが含まれていない必要があります。

  • 起動前に、宛先クラスターにmongosync_reserved_for_internal_useシステムデータベースが含まれていない必要があります。

  • 使用中のフィルターは変更できません。 新しいフィルターを作成するには、「既存のフィルターの置き換え 」を参照してください。

  • コレクションの名前を変更できるのは、特定の状況のみです。 詳細については、「コレクションの追加と名前変更 」を参照してください。

  • フィルターにビューが含まれ、基本コレクションは含まれていない場合、ビュー メタデータのみが宛先クラスターに同期されます。 ビュー ドキュメントを含めるには、基本コレクションも同期する必要があります。

  • フィルターではシステム コレクションまたはシステム データベースを指定できません。

  • フィルタリングとともに$out集計ステージまたはmapReduceコマンド(コレクションを作成または置換するように設定されている場合)を使用するには、データベース全体を使用するようにフィルターを構成する必要があります。 フィルターを データベース内のコレクションに制限することはできません。

    詳細については、「 mapReduce と $out によるフィルタリング 」を参照してください。

1.3.0 以降、Cluster-to-Cluster Sync では、上限付きコレクションが一部制限付きでサポートされます。

  • convertToCapped はサポートされていません。convertToCapped を実行すると、mongosync はエラーで終了します。

  • cloneCollectionAsCapped はサポートされていません。

ソースクラスター上の上限付きコレクションは、同期中に正常に動作します。

同期中に、宛先クラスター上の上限付きコレクションに一時的な変更が加えられます。

  • ドキュメントの数に制限はありません。

  • 最大コレクション サイズは 1 PB です。

mongosync は、コミット時に最大ドキュメント数と最大ドキュメント サイズの元の値を復元します。

Cluster-to-Cluster Sync では、システム コレクションは宛先クラスターにレプリケートされません。

ソース クラスターで dropDatabase コマンドを発行しても、この変更が宛先クラスターに直接適用されることはありません。代わりに、Cluster-to-Cluster Sync により、宛先クラスターのデータベース内のユーザー コレクションとビューが削除されます。ただし、そのデータベース上のシステム コレクションは削除されません。

たとえば、送信先クラスターでは、次のようになります。

  • 削除操作は、ユーザーが作成した system.js コレクションには影響しません。

  • プロファイリングを有効にすると、system.profile コレクションは残ります。

  • ソースクラスターでビューを作成してからデータベースを削除すると、レプリケートされた削除操作によりビューが削除されますが、空のsystem.views コレクションが残ります。

このような場合、dropDatabase を複製すると、ユーザーが作成したコレクションはすべてデータベースから削除されますが、そのシステム コレクションは宛先クラスターに残ります。

mongosync では、移行中にローリングインデックスのビルドはサポートされません。移行中にローリング方式でインデックスをビルドしないようにするには、次のいずれかの方法を使用して、宛先インデックスがソース インデックスと一致することを確認します。

1.9 以降、mongosync は埋め込み検証子を使用して、ソースクラスターから宛先クラスターへのコレクションの同期が成功したことを確認できます。

埋め込み検証子は mongosync 1.8 以前では使用できません。

別の検証方法については、「 データ転送の検証 」を参照してください。

埋め込み検証子には次の制限があります。

  • 検証子はシャーディングされたクラスターをサポートしていません。移行にmongosync シャーディングされたシャーディングされたクラスターを無効にします。

  • mongosync は検証子の状態をメモリに保存するため、大幅なメモリ オーバーヘッドが発生する可能性があります。検証子を実行するには、mongosync は約 10 GBのメモリに加えて、100 万ドキュメントごとに追加の 500 MB を必要とします。

  • 検証子は再開できません。ユーザーが同期を停止または一時停止した後、何らかの理由で mongosync を再度開始した場合、検証プロセスは最初から再開されます。これにより検証が移行より大幅に遅れる可能性があります。

  • /reverse エンドポイントは検証子を無効にします。/reverse エンドポイントへの追加呼び出し後も無効のままになります。

  • 検証を有効にして同期を開始し、buildIndexesnever に設定している場合、mongosync がソースクラスターで TTLコレクションを見つけると、移行は失敗します。これは、/start エンドポイントを呼び出した後に発生する可能性があり、移行の進行中にユーザーがソースクラスターに TTLインデックスを作成する場合などです。

    宛先クラスターでインデックスを構築せずに TTL コレクションを同期するには、 検証子を無効にして同期を開始する必要があります。

検証子は、次の名前空間はチェックしません。

  • 上限付きコレクション

  • TTL インデックスを持つコレクション

  • デフォルトの照合を使用しないコレクション

  • ビュー

検証子は、次のコレクション機能をチェックしません。

  • コレクションメタデータ

  • Indexes

上記のデータとメタデータデータ を確認するには、これらのコレクションとコレクション機能の追加チェックをスクリプト化します。詳細については、「 データ転送を確認する 」を参照してください。

戻る

逆同期方向