Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

moveChunk

項目一覧

  • 定義
  • 互換性
  • Considerations
  • 動作
moveChunk

内部管理コマンド。 シャード 間で チャンク を移動します。moveChunkmongos管理データベース を使用中に インスタンスを介して コマンドを発行します。次のフォームを使用します。

Tip

mongoshでは、このコマンドはsh.moveChunk()ヘルパー メソッドを通じて実行することもできます。

ヘルパー メソッドはmongoshユーザーには便利ですが、データベースコマンドと同じレベルの情報は返されない可能性があります。 便宜上必要ない場合、または追加の戻りフィールドが必要な場合は、 データベースコマンドを使用します。

db.adminCommand( { moveChunk : <namespace> ,
find : <query> ,
to : <string>,
forceJumbo: <boolean>,
_secondaryThrottle : <boolean>,
writeConcern: <document>,
_waitForDelete : <boolean> } )

あるいは、

db.adminCommand( { moveChunk : <namespace> ,
bounds : <array> ,
to : <string>,
forceJumbo: <boolean>,
_secondaryThrottle : <boolean>,
writeConcern: <document>,
_waitForDelete : <boolean> } )

moveChunkコマンドには次のフィールドがあります:

フィールド
タイプ
説明
moveChunk
string
チャンク が存在する コレクション 名前空間 。データベース名を含む、コレクションの完全な名前空間を指定します。
find
ドキュメント
移動するチャンクのシャードキー値を指定する、シャードキーの等価一致。 boundsフィールドとfindフィールドのいずれかを指定しますが、両方は指定しないでください。 findハッシュされたシャードキー を使用するコレクション内のチャンクを選択するために、 フィールドを使用し ない でください。
bounds
配列
移動する特定のチャンクの境界。 配列は、移動するチャンクのシャードキーの下限と上限のシャードキー値を指定する 2 つのドキュメントで構成されている必要があります。 boundsフィールドとfindフィールドのいずれかを指定しますが、両方は指定しないでください。 ハッシュされたシャードキーを使用するコレクション内のチャンクを選択するには、 boundsを使用します。
to
string
チャンクの宛先シャードの名前。
ブール値

任意。 コマンドが 移行するには大きすぎるチャンクを移動できるかどうかを決定するフラグです。 そのチャンクにはジャンボ というラベルが付いている場合と付いていない場合があります。

  • trueの場合、コマンドはチャンクを移動できます。

  • falseの場合、コマンドはチャンクを移動できません。

デフォルトは false です。

警告:

forceJumbo=truemoveChunkコマンドは、コレクションに対する読み取り操作と書込み操作をブロックします。

このオプションを指定すると、シャードは、設定された チャンク サイズ よりも大きい場合でも、チャンクを移行します。 移行中は、コレクションは使用できなくなります。

この長いブロッキング期間なしでこれらの大きなチャンクを移行するには、代わりに「サイズ制限を超えるバランス範囲」を参照してください。

_secondaryThrottle
ブール値

任意。 WiredTigerの場合、 はデフォルトでfalseになります。

  • trueの場合、デフォルトでは、チャンクの移行中に移動された各ドキュメントは、バランサーが次のドキュメントに進む前に少なくとも 1 つのセカンダリに伝播します。 これは{ w: 2 }の書込み保証 (write concern) と同等です。

    別の書込み保証 (write concern) を指定するには、 writeConcernオプションを使用します。

  • falseの場合、バランサーはセカンダリへのレプリケーションを待たずに次のドキュメントに進みます。

詳細については、「セカンダリ スロットル 」を参照してください。

writeConcern
ドキュメント

任意。 チャンクの移行中に_secondaryThrottleがセカンダリを待機するために使用する 書込み保証 ( write concern ) を表すドキュメント。

writeConcern には_secondaryThrottle: trueが必要です。

_waitForDelete
ブール値
任意。 テスト目的の内部オプション。 デフォルトはfalseです。 trueに設定されている場合、 moveChunk操作の削除フェーズがブロックされます。

boundsの値は次の形式をとります。

[ { hashedField : <minValue> } ,
{ hashedField : <maxValue> } ]

チャンク移行」セクションでは、MongoDB 上のシャード間でチャンクがどのように移動されるかについて説明します。

Tip

以下も参照してください。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

重要

このコマンドはサーバーレスインスタンスではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

moveChunkデータの初期取り込みに合わせてシャーディングされた クラスター を準備したり、大規模な一括インポート操作を実行したりする場合など、特別な状況でのみ を使用してください。ほとんどの場合、バランサーがシャーディングされたクラスターにチャンクを作成し、バランスをとれるようにします。 詳細については、「 シャーディングされたクラスターで範囲を作成する」を参照してください。

moveChunkにはすべてのインデックスがターゲットに存在している必要があります(つまり to )は移行前にシャードを使用し、必要なインデックスが存在しない場合はエラーを返します。

moveChunk{chunks コレクションで別のメタデータ操作が進行中の場合、 は次のエラー メッセージを返します。

errmsg: "The collection's metadata lock is already taken."

moveChunkの実行中にバランサー プロセスなどの別のプロセスがメタデータを変更すると、このエラーが表示されることがあります。 副作用のないmoveChunk操作を再試行できます。

MongoDB5.0 以降では、転送されるチャンクの合計サイズ(MB maxCatchUpPercentageBeforeBlockingWritesmoveChunk単位)と比較した場合、 操作中にまだ移行されていないデータの最大許可パーセンテージを指定するために、 を設定します。

戻る

mergeAllChunksOnShard