制限
項目一覧
警告
mongosync
は、ドキュメント化された制限への準拠の有無はチェックしません。アプリケーションが制限の影響を受けないことを確認してください。以下の制限のいずれかが課されている状態で mongosync
を実行すると、対象クラスターで予期しない動作が発生する恐れがあります。
移行が一時停止または再開される場合に停止されるときを含め、移行の全期間にわたってこれらの制限に従う必要があります。
一般的な制限
注意
MongoDBサーバーの互換性の詳細については、「 MongoDB Serverのバージョンの互換性 」を参照してください。
mongosync
は、移行中にメジャー バージョンまたはマイナー バージョンを変更するインプレースサーバーバージョンmongosync
アップグレードをサポートしていません。 ではパッチ バージョンのアップグレードは可能です。詳しくは、 サーバーのアップグレード手順を参照してください。宛先クラスターは空である必要があります。
mongosync
は、クラスターまたは環境が正しく構成されているかどうかを検証しません。mongosync
の実行中は、他のクライアントが宛先クラスターに書き込みを行わないでください。コミット プロセスを開始し、
enableUserWriteBlocking
true
start
エンドポイントを使用したときに を に設定しなかった場合は、コミット プロセスを開始する前にソースクラスターへの書込みを防ぐ必要があります。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 コミュニティ エディション
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
エンドポイントへの追加呼び出し後も無効のままになります。検証を有効にして同期を開始し、
buildIndexes
をnever
に設定している場合、mongosync
がソースクラスターで TTLコレクションを見つけると、移行は失敗します。これは、/start
エンドポイントを呼び出した後に発生する可能性があり、移行の進行中にユーザーがソースクラスターに TTLインデックスを作成する場合などです。宛先クラスターでインデックスを構築せずに TTL コレクションを同期するには、 検証子を無効にして同期を開始する必要があります。
サポートされていない検証チェック
検証子は、次の名前空間はチェックしません。
上限付きコレクション
TTL インデックスを持つコレクション
デフォルトの照合を使用しないコレクション
ビュー
検証子は、次のコレクション機能をチェックしません。
コレクションメタデータ
Indexes
上記のデータとメタデータデータ を確認するには、これらのコレクションとコレクション機能の追加チェックをスクリプト化します。詳細については、「 データ転送を確認する 」を参照してください。