定義
sh.moveCollection(namespace, toShard)シャーディングされていないコレクションを別のシャードに移動します。
sh.moveCollection()mongos管理データベース を使用しながら、 インスタンスで を実行します。重要
mongosh メソッド
This page documents a
mongoshmethod. This is not the documentation for database commands or language-specific drivers, such as Node.js.データベースコマンドについては、
moveCollectionコマンドを参照してください。MongoDB API ドライバーについては、各言語の「MongoDB ドライバーのドキュメント」を参照してください。
構文
sh.moveCollection() の構文は次のとおりです。
sh.moveCollection( "<namespace>", "<toShard>" )
注意
listShards受信者シャードのIDを取得するには、 コマンドを使用します。
パラメーター
sh.moveCollection() は以下のパラメーターを取ります。
Parameter | タイプ | 説明 |
|---|---|---|
| string | 移動するコレクションのデータベースと名前。 |
| string | 受信者シャードの ID。 |
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
- MongoDB Atlas はクラウドでの MongoDB 配置のための完全管理サービスです
注意
このコマンドは、Atlas 無料および Flex 階層では使用できません。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
Considerations
sh.moveCollection()は、シャーディングされたクラスターでのみ実行できます。sh.moveCollection()は、シャーディングされていないコレクションのみを移動できます。sh.moveCollection()は一度に 1 つのコレクションのみを移動できます。sh.moveCollection()の最小期間は5分です。writeConcernMajorityJournalDefaultはtrueである必要があります。一意性制約があるコレクションを移動するには、新しいインデックスが既存のユニークインデックスの一意なインデックス要件を満たす必要があります。
移動されているコレクションで Atlas Search が使用されている場合、
moveCollectionが完了するとその検索インデックスは使用できなくなります。検索インデックスは手動で再構築する必要があります。If the collection you're moving is archived in Atlas Online Archives, the online archive files are marked as
Orphanedonce the moving operation completes. You can create another online archive for the same database, collection, and fields as the orphaned archive as long as there is no other archive for that same combination in theActivestate.moveCollectionが完了するまで、シャードの追加や削除、埋め込みコンフィギュレーションサーバーと専用コンフィギュレーションサーバー間での移行などのトポロジー変更を行うことはできません。sh.moveCollection()の進行中に移動されるコレクションに対して次の操作を実行することはできません。moveCollectionが進行中の間は、クラスターに対して次の操作を実行することはできません。sh.moveCollection()の進行中に発生するインデックスビルドは、メッセージが表示されずに失敗する可能性があります。sh.moveCollection()の進行中は、インデックスを作成しないでください。インデックスビルドが進行中の場合は、
sh.moveCollection()を呼び出しないでください。
要件
コレクションを移動する 前に、次の要件を満たしていることを確認してください。
アプリケーションは、影響を受けるコレクションが書込みをブロックする期間を2 秒許容できます。 書込み (write) がブロックされている期間中、アプリケーションのレイテンシが増加します。
データベースが次のリソース要件を満たしている。
コレクションを移動するシャードに、コレクションとそのインデックス用の十分なストレージ領域があることを確認します。 宛先シャードでは少なくとも
( Collection storage size + Index Size ) * 2バイトが使用可能である必要があります。I/Oキャパシティーが50 % 未満であることを確認します。
CPU 負荷が80 % 未満であることを確認します。
重要
これらの要件はデータベースによって強制されません。 十分なリソースを割り当てられない場合、次の結果が発生する可能性があります。
データベースの容量が不足し、シャットダウンした
パフォーマンスの低下
操作に予想よりも時間がかかる
アプリケーションにトラフィックが少ない期間がある場合は、可能であれば、その時間中にコレクションに対してこの操作を実行します。
例
この例では、 appデータベース上のinventoryという名前のシャーディングされていないコレクションをshard02シャードに移動します。
sh.moveCollection( "app.inventory", "shard02" )
使用可能なシャード ID のリストを取得するには、 sh.status()を実行します。 詳細についてはsh.status() 出力 を参照してください。