警告
mongosync は、ドキュメント化された制限への準拠の有無はチェックしません。アプリケーションが制限の影響を受けないことを確認してください。以下の制限のいずれかが課されている状態で mongosync を実行すると、対象クラスターで予期しない動作が発生する恐れがあります。
一般的な制限
注意
MongoDBサーバーの互換性の詳細については、MongoDB Serverバージョンの互換性とサポートを参照してください。
宛先クラスターは空である必要があります。
mongosyncは、クラスターまたは環境が正しく構成されているかどうかを検証しません。mongosyncの実行中は、他のクライアントが宛先クラスターに書き込みを行わないでください。書込みブロックが無効になっている場合、クライアントはコミット プロセスを開始する前にソースクラスターへの書込みを防ぐ必要があります。
system.* コレクションは複製されません。
ドル記号(
$)のプレフィックスがついたフィールド名はサポートされていません。 「ピリオドとドル記号を含むフィールド名 」を参照してください。サーバーレス クラスターはサポートされていません。
MongoDB 共有階層はサポートされていません。
Queryable Encryptionはサポートされていません。
同じフィールドに一意なインデックスと一意でないインデックスが定義されているコレクションを同期することはできません。
M10+Atlas クラスターでmongosyncを実行する前に、 Require Indexes for All Queriesオプションを無効にします。mongosyncユーザーまたはロールは同期されません。mongosyncは、宛先クラスターへの同期中にソースクラスターで行われたapplyOps操作を複製しません。mongosyncは、primary読み込み設定(read preference)を使用してソースクラスターから読み取る必要があります。mongosyncでは、 Atlas Search インデックスの同期はサポートされていません。mongosyncは、 WiredTigerストレージエンジンを使用するクラスターのみをサポートします。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 では、移行中にローリングインデックスのビルドはサポートされません。移行中にローリング方式でインデックスをビルドしないようにするには、次のいずれかの方法を使用して、宛先インデックスがソース インデックスと一致することを確認します。
移行する前に、ソースにインデックスをビルドします。
移行後に、宛先でインデックスをビルドします。