定義
moveCollectionバージョン8.0の新機能。
シャーディングされていないコレクションを別のシャードに移動します。
moveCollectionmongos管理データベース を使用しながら、 インスタンスで を実行します。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
重要
このコマンドは、M0 および Flex クラスターではサポートされていません。詳細については、「 サポートされていないコマンド 」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
制限事項
moveCollection はQueryable Encryptionコレクションには使用できません。
構文
このコマンドの構文は、次のとおりです。
db.adminCommand( { moveCollection: "<database>.<collection>", toShard: "<ID of the recipient shard>", } )
注意
listShards受信者シャードのIDを取得するには、 コマンドを使用します。
コマンドフィールド
このコマンドは、次のフィールドを使用します。
フィールド | タイプ | 説明 |
|---|---|---|
| string | 移動するコレクションのデータベースと名前。 |
| string | 受信者シャードの ID。 |
Considerations
moveCollectionは、シャーディングされたクラスターでのみ実行できます。moveCollectionは、シャーディングされていないコレクションのみを移動できます。moveCollectionは一度に 1 つのコレクションのみを移動できます。moveCollectionの最小期間は5分です。Atlas Search インデックスは、
moveCollectionの実行後に再構築する必要があります。moveCollectionが完了するまで、シャードの追加や削除、埋め込みコンフィギュレーションサーバーと専用コンフィギュレーションサーバー間での移行などのトポロジー変更を行うことはできません。moveCollectionの進行中に移動されるコレクションに対して次の操作を実行することはできません。moveCollectionが進行中の間は、クラスターに対して次の操作を実行することはできません。moveCollectionの進行中に発生するインデックスビルドは、メッセージが表示されずに失敗する可能性があります。moveCollectionの進行中は、インデックスを作成しないでください。インデックスビルドが進行中の場合は、
moveCollectionを呼び出しないでください。
要件
コレクションを移動する 前に、次の要件を満たしていることを確認してください。
アプリケーションは、影響を受けるコレクションが書込みをブロックする期間を2 秒許容できます。 書込み (write) がブロックされている期間中、アプリケーションのレイテンシが増加します。
データベースが次のリソース要件を満たしている。
コレクションを移動するシャードに、コレクションとそのインデックス用の十分なストレージ領域があることを確認します。 宛先シャードでは少なくとも
( Collection storage size + Index Size ) * 2バイトが使用可能である必要があります。I/Oキャパシティーが50 % 未満であることを確認します。
CPU 負荷が80 % 未満であることを確認します。
重要
これらの要件はデータベースによって強制されません。 十分なリソースを割り当てられない場合、次の結果が発生する可能性があります。
データベースの容量が不足し、シャットダウンした
パフォーマンスの低下
操作に予想よりも時間がかかる
アプリケーションにトラフィックが少ない期間がある場合は、可能であれば、その時間中にコレクションに対してこの操作を実行します。
例
この例では、 appデータベース上のinventoryという名前のシャーディングされていないコレクションをshard02シャードに移動します。
db.adminCommand( { moveCollection: "app.inventory", toShard: "shard02" } )
使用可能なシャード ID のリストを取得するには、 sh.status()を実行します。 詳細についてはsh.status() 出力 を参照してください。