警告
mongosync は、ドキュメント化された制限への準拠の有無はチェックしません。アプリケーションが制限の影響を受けないことを確認してください。以下の制限のいずれかが課されている状態で mongosync を実行すると、対象クラスターで予期しない動作が発生する恐れがあります。
移行が一時停止または再開される場合に停止されるときを含め、移行の全期間にわたってこれらの制限に従う必要があります。
一般的な制限
注意
MongoDB サーバー の互換性の詳細については、 「 MongoDB Serverのバージョンの互換性 」を参照してください。
mongosyncdoes not support in-place server version upgrades or downgrades that change the major or minor version during a migration.mongosyncdoes allow patch version upgrades. To learn more, see the server upgrade instructions.mongosyncは、クラスターまたは環境が正しく構成されているかどうかを検証しません。mongosyncの実行中は、他のクライアントが宛先クラスターに書き込みを行わないでください。system.* コレクションは複製されません。
ドル記号(
$)のプレフィックスがついたフィールド名はサポートされていません。 「ピリオドとドル記号を含むフィールド名 」を参照してください。サーバーレス クラスターはサポートされていません。
MongoDB 共有階層はサポートされていません。
Queryable Encryptionはサポートされていません。
Client-Side Field Level Encryption isn't supported.
同じフィールドに一意なインデックスと一意でないインデックスが定義されているコレクションを同期することはできません。
Before you attempt to run
mongosyncwith anM10+Atlas cluster, disable the Require Indexes for All Queries option to setnotablescantofalseon both the source and destination clusters.mongosyncユーザーまたはロールは同期されません。mongosyncdoes not replicateapplyOpsoperations made on the source cluster during sync to the destination cluster.mongosyncmust read from the source cluster using theprimaryread preference.mongosyncでは、現在MongoDB のバージョンをアップグレードまたはダウングレードしているソースクラスターまたは宛先クラスターはサポートされていません。mongosyncでは、 Atlas Search インデックスの同期はサポートされていません。mongosyncは、 WiredTigerストレージエンジンを使用するクラスターのみをサポートします。タイムスタンプが空のドキュメントとコレクションを同期することはできません。たとえば、6.0 以前の
Timestamp(0,0)などです。 ソースクラスター。mongosyncはフィールド名が重複するドキュメントをサポートしていません。 詳細については、 「 MongoDB重複するフィールド名をサポートしていません 」を参照してください。mongosyncでは、競合する 名前空間 がすでに含まれている宛先クラスターへの名前空間名前空間の移行はサポートされていません。mongosyncは、プロビジョニングされたユーザーのいない宛先クラスターはサポートしません。8.0.20 より前のすべてのMongoDBバージョンでは、
replace操作によって$vという名前のフィールドがドキュメントに追加されると、変更イベントアプリケーション中に回復不能な致命的なエラーが発生し、mongosyncが終了します。同期を再開すると、常に同じエラーで失敗します。この問題を解決するには、宛先で
mongosyncのメタデータデータベースを削除して同期をゼロから再開するか、ソースクラスターを 8.0.20+ にアップグレードします。
MongoDB コミュニティ エディション
MongoDB はMongosync with Community のビルドをテストしておらず、ほとんどの場合、 MongoDB はMongosync with Community の配置のサポートを提供していません。MongoDB Community Edition で Mongosync を使用する場合は、 MongoDB の営業担当者に 問い合わせて 、要件や個別のオプションについて説明してください。
サポートされていないコレクションのタイプ
時系列コレクションはサポートされていません。
expireAfterSecondsが設定されたクラスター化されたコレクションはサポートされていません。
宛先ディスクスペース
バージョン1.22の新機能。
mongosync が移行を開始する前に、宛先クラスターで使用可能なディスク容量を確認します。 mongosync は、移行用に選択したソース コレクションとインデックスのディスク上のサイズを推定し、その推定値が宛先ファイルシステムで使用可能なスペースと比較します。 mongosync は、ストレージストレージエンジンの圧縮の違い、インデックスビルドが使用する一時領域、移行中のoplog の増加を考慮して、推定値に 1.25x 安全係数を適用します。
If the estimated space required exceeds the space available, /start returns an InsufficientDestinationDiskSpace error, and mongosync does not start the migration. To resolve the error, free disk space on the destination cluster and call /start again.
mongosync は、ファイルシステムの統計を取得できない宛先のチェックをスキップします。
重要
This check is a best-effort guardrail. It does not guarantee that the migration fits on the destination cluster. Changes that occur during the migration and differences in how mongosync distributes disk space across destination shards both affect the estimate.
To disable the check, set skipDiskSpaceCheck to true in the /start request. Use this option when the destination filesystem statistics do not accurately represent the storage available to the migration. To learn more, see Request Body Parameters.
シャーディングされたクラスター
mongosyncでは、シャーディングされたクラスターからレプリカセットへの同期はサポートされていません。mongosyncでは、1 つ以上のアービタを持つシャーディングされたクラスター トポロジーへの同期はサポートされていません。mongosyncdoesn't support sync to or from global clusters.レプリカセットからシャーディングされたクラスターへの同期には次の制限があります。
mongosyncを使用すると、同期中にsharding.shardingEntriesオプションに含まれるコレクションの名前を変更できます。 詳細については、「同期中の名前の変更 」を参照してください。sharding.createSupportingIndexesオプションを使用すると、同期中に宛先クラスターにインデックスが自動的に作成されます。 ソースクラスターでは、その後にこれらのインデックスを作成することはできません。シャードキーをサポートするインデックスを手動で作成する場合は、
mongosyncが開始する前、または移行が完了してmongosyncが停止した後にインデックスを作成する必要があります。
コレクション内では、
_idフィールドはクラスター内のすべてのシャードで一意である必要があります。 See Sharded Clusters and Unique Indexes for more details.The
movePrimarycommand cannot be used to reassign the primary shard while syncing.ゾーン構成のレプリケーションはありません。
mongosyncはデータをレプリケートしますが、ゾーンは継承しません。同期中にシャードを追加または削除することはできません。
mongosyncは、すべてのシャードに存在するインデックスのみを同期します。mongosyncがシャード間で一貫性のないインデックス指定を検出した場合、致命的なエラーで終了します。不整合をチェックする際、mongosyncはnsとbackgroundインデックスフィールドを無視します。注意
To check for index inconsistencies, see Find Inconsistent Indexes Across Shards. This method surfaces
nsandbackgroundfield differences, whichmongosyncignores when checking for inconsistencies.mongosyncソースクラスターまたは宛先クラスターがシャーディングされたクラスターで、名前空間フィルタリングで を実行中いない場合は、 コマンドを実行中、コマンドが完了するまでbalancerStop15分間待機して、ソースクラスターのバランサーを無効にする必要があります。ソースクラスターまたは宛先クラスターがシャーディングされたクラスターで、名前空間フィルタリングを使用して
mongosyncを実行中いる場合は、ソースクラスターのバランサーをグローバルに有効にできますが、名前空間フィルター内のすべてのコレクションに対して無効にする必要があります。「 フィルタリングされた同期でコレクションのバランサーを無効にする 」を参照してください。ソースクラスターのバランサーを完全に無効にすることもできます。You must always disable the balancer on a sharded destination cluster by using
balancerStop.If you have enabled the source cluster's balancer, but disabled it for collections within the namespace filter, do not run
shardCollectionon collections within the namespace filter. If you runshardCollectionon collections within the namespace filter during the migration,mongosyncreturns an error and stops, which requires you to start the migration from scratch.mongosyncdoesn't support running the commandtransitionFromDedicatedConfigServerduring execution.同期中にシャードキーを調整することはできません。
The
reshardCollectionoperations from the source cluster are not supported during sync.mongosyncは、シャーディングされたクラスター上のデフォルト以外の照合順序を持つコレクションをサポートしません。これは、シャーディングされたコレクションとシャーディングされていないコレクションの両方に適用されます。mongosync一部のデータを含むシャードで、整合性や欠落しているインデックスについてのエラー。mongosyncfails if there is a balancing window configured on the source or destination cluster.mongosyncでは、事前構成されたシャードゾーンタグを持つ宛先名前空間への移行はサポートされていません。移行を開始する前に、宛先でmongosyncが移行する名前空間からすべてのシャード タグ範囲またはゾーンを削除します。移行がCOMMITTED状態に達した後に、必要なゾーン範囲を再度追加できます。
元に戻す
- 古いソースに、シャード間で部分的に分散された一意なインデックスがある場合、元に戻すと失敗する可能性があります。 元に戻す前に、すべてのシャードに一意なインデックスがあることを確認してください。
ソースクラスターと宛先クラスターは同じ数のシャードを持つ必要があります。クラスターのトポロジーが異なる場合、逆同期はできません。
ソースクラスターと宛先クラスターは同じMongoDBメジャー バージョンを実行する必要があります。
- To reverse direction,
mongosyncrequires that all unique indexes on the source cluster (except for_id) do not have legacy unique index keys.
複数のクラスター
mongosyncでは、1 つの宛先クラスターへの複数のソースクラスターの同期はサポートされていません。1 つのクラスターを同時に 1 つの
mongosyncインスタンスでソースクラスターにし、別のmongosyncインスタンスの宛先クラスターにすることはできません。
フィルタリングされた同期
フィルタリングは、元の同期ではサポートされていません。
/startを呼び出すときに preExistingDestinationData パラメータをtrueに設定しない限り、宛先クラスターには起動前にユーザー データが含まれていない必要があります。起動前に、宛先クラスターに
__mdb_internal_mongosyncシステムデータベースが含まれていない必要があります。使用中のフィルターは変更できません。 新しいフィルターを作成するには、「既存のフィルターの置き換え 」を参照してください。
コレクションの名前を変更できるのは、特定の状況のみです。 詳細については、「コレクションの追加と名前変更 」を参照してください。
フィルターにビューが含まれ、基本コレクションは含まれていない場合、ビュー メタデータのみが宛先クラスターに同期されます。 ビュー ドキュメントを含めるには、基本コレクションも同期する必要があります。
フィルターではシステム コレクションまたはシステム データベースを指定できません。
To use the
$outaggregation stage or themapReducecommand (when set to create or replace a collection) with filtering, you must configure the filter to use the entire database. You cannot limit the filter to collections within the database.詳細については、「 mapReduce と $out によるフィルタリング 」を参照してください。
上限付きコレクション
1.3.0 以降、Mongosync は、Cappedコレクション を一部制限付きでサポートしています。
1.20.0 以降、移行中に新しい上限付きコレクションの作成を有効にするには、mongosync を起動するときに --enableCappedCollectionHandling フラグを渡す必要があります。
convertToCappedis not supported. If you runconvertToCapped,mongosyncexits with an error.cloneCollectionAsCappedはサポートされていません。
ソースクラスター上の上限付きコレクションは、同期中に正常に動作します。
同期中に、宛先クラスター上の上限付きコレクションに一時的な変更が加えられます。
ドキュメントの数に制限はありません。
最大コレクション サイズは 1 PB です。
mongosync は、コミット時に最大ドキュメント数と最大ドキュメント サイズの元の値を復元します。
システム コレクション
Mongosync は、システム コレクションを宛先クラスターにレプリケートしません。
If you issue a dropDatabase command on the source cluster, this change is not directly applied on the destination cluster. Instead, Mongosync drops user collections and views in the database on the destination cluster, but it does not drop system collections on that database.
たとえば、送信先クラスターでは、次のようになります。
The drop operation does not affect a user-created
system.jscollection.If you enable profiling, the
system.profilecollection remains.If you create views on the source cluster and then drop the database, replicating the drop removes the views, but leaves an empty
system.viewscollection.
このような場合、dropDatabase を複製すると、ユーザーが作成したコレクションはすべてデータベースから削除されますが、そのシステム コレクションは宛先クラスターに残ります。
インデックス構築
When buildIndexes is set to "afterDataCopy", mongosync might fail to apply Rename DDL events. If this occurs, restart the migration from scratch with buildIndexes set to "beforeDataCopy" or "never". Setting buildIndexes to beforeDataCopy can increase the migration time, and setting buildIndexes to never requires you to build indexes manually after the migration completes.
ローリング処理によるインデックスビルド
mongosync does not support rolling index builds during migration. To avoid building indexes in a rolling fashion during migration, use one of the following methods to ensure that your destination indexes match your source indexes:
移行する前に、ソースにインデックスをビルドします。
移行中にデフォルトのインデックス構築を使用してソースにインデックスをビルドします。
移行後に、宛先でインデックスをビルドします。
埋め込み検証子
1.9 以降、mongosync は埋め込み検証子を使用して、ソースクラスターから宛先クラスターへのコレクションの同期が成功したことを確認できます。
互換性
埋め込み検証子は Mongosync 1.8 以前では使用できません。
別の検証方法については、「 データ転送の検証 」を参照してください。
制限
埋め込み検証子には次の制限があります。
mongosyncは検証子の状態をメモリに保存するため、大幅なメモリ オーバーヘッドが発生する可能性があります。 検証子を実行するには、mongosyncは約 10 GBのメモリに加えて、100 万ドキュメントごとに追加の 500 MB を必要とします。検証子は再開できません。 ユーザーが同期を停止または一時停止した後、何らかの理由で
mongosyncを再度開始した場合、検証プロセスは最初から再開されます。 これにより検証が移行より大幅に遅れる可能性があります。レプリカセットからシャーディングされたクラスターに移行する場合、シャーディングオプションで指定したソース コレクションの名前を変更することはできません。CEA フェーズ 中にシャーディングオプションに含まれるコレクションの名前を変更すると、検証子はシャーディングの不一致を報告します。
検証を有効にして同期を開始し、
buildIndexesをneverに設定している場合、mongosyncがソースクラスターで TTLコレクションを見つけると、移行は失敗します。 これは、/startエンドポイントを呼び出した後に発生する可能性があり、移行の進行中にユーザーがソースクラスターに TTLインデックスを作成する場合などです。宛先クラスターでインデックスを構築せずに TTL コレクションを同期するには、 検証子を無効にして同期を開始する必要があります。
サポートされていない検証チェック
検証子は、次の名前空間はチェックしません。
上限付きコレクション
TTL インデックスを持つコレクション(移行中に追加または削除される TTL インデックスを含む)
デフォルトの照合を使用しないコレクション
サポートされていないコレクションを確認するには、コレクションを確認するための追加のスクリプトコードを追加します。詳細については、データ転送を確認する を参照してください。
永続的なクエリ設定
mongosync は、 MongoDB 8.0 で導入された永続的クエリ設定(PQS)を移行しません。ソースクラスターがPQS を使用している場合は、それらを手動で移行する必要があります。
6.0 より前の移行
1.10 以降、mongosync は、6.0 より古いバージョンのMongoDBサーバーを実行中ソースクラスターからの移行をサポートしています。 サポートされている移行パスの詳細については、 「 MongoDB Server のバージョンの互換性 」を参照してください。
次の制限は、6.0 より前に 次の移行:
The source cluster cannot have orphaned documents. To clean up any orphaned documents, run the
cleanupOrphanedcommand on themongodinstances on every shard's primary node on their source cluster. Wait for this command to complete with a status{ok:1}before starting the migration.移行中に、ソースクラスターでは DDL イベントを生成する書込み (write) が発生しません。次のイベントは発生しません。
collModcreatecreateIndexesdropdropDatabasedropIndexesrefineCollectionShardKeyrenamereshardCollectionshardCollection
This includes operations that may create new collections such as
mapReduce,$out, and$merge. This also includes collections created implicitly from inserts. Only writes that produce CRUD events can occur during the migration.注意
名前空間フィルターの外部のソース コレクションで DDL イベントを生成する書込み (write) は許可されます。
geoHaystackインデックスはサポートされていません。/reverse エンドポイントはサポートされていません。
reversible/startリクエストでは オプションは有効にできません。/commitエンドポイントを呼び出した後、ソースクラスターに書込み (write) が行われていないことを確認します。createSupportingIndexesシャーディングパラメータ は有効にできません。代わりに、ソースクラスターでシャードキー をサポートするインデックスを作成します。仕様が一貫していないインデックスや、1 つ以上のシャードで欠落しているインデックスがある場合、
mongosyncはエラーを返します。インデックスの不一致を確認するには、シャード間で一貫性のないインデックスを検索する を参照してください。