moveChunk
定義
moveChunk
内部管理コマンド。 シャード 間で チャンク を移動します。
moveChunk
mongos
管理データベース を使用中に インスタンスを介して コマンドを発行します。次のフォームを使用します。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
stringfind
ドキュメント移動するチャンクのシャードキー値を指定する、シャードキーの等価一致。bounds
フィールドとfind
フィールドのいずれかを指定しますが、両方は指定しないでください。find
ハッシュされたシャードキー を使用するコレクション内のチャンクを選択するために、 フィールドを使用し ない でください。bounds
配列移動する特定のチャンクの境界。 配列は、移動するチャンクのシャードキーの下限と上限のシャードキー値を指定する 2 つのドキュメントで構成されている必要があります。bounds
フィールドとfind
フィールドのいずれかを指定しますが、両方は指定しないでください。 ハッシュされたシャードキーを使用するコレクション内のチャンクを選択するには、bounds
を使用します。to
stringチャンクの宛先シャードの名前。ブール値任意。 コマンドが 移行するには大きすぎるチャンクを移動できるかどうかを決定するフラグです。 そのチャンクにはジャンボ というラベルが付いている場合と付いていない場合があります。
true
の場合、コマンドはチャンクを移動できます。false
の場合、コマンドはチャンクを移動できません。
デフォルトは
false
です。警告:
forceJumbo=true
とmoveChunk
コマンドは、コレクションに対する読み取り操作と書込み操作をブロックします。このオプションを指定すると、シャードは、設定された チャンク サイズ よりも大きい場合でも、チャンクを移行します。 移行中は、コレクションは使用できなくなります。
この長いブロッキング期間なしでこれらの大きなチャンクを移行するには、代わりに「サイズ制限を超えるバランス範囲」を参照してください。
_secondaryThrottle
ブール値任意。 WiredTigerの場合、 はデフォルトで
false
になります。true
の場合、デフォルトでは、チャンクの移行中に移動された各ドキュメントは、バランサーが次のドキュメントに進む前に少なくとも 1 つのセカンダリに伝播します。 これは{ w: 2 }
の書込み保証 (write concern) と同等です。別の書込み保証 (write concern) を指定するには、
writeConcern
オプションを使用します。false
の場合、バランサーはセカンダリへのレプリケーションを待たずに次のドキュメントに進みます。
詳細については、「セカンダリ スロットル 」を参照してください。
writeConcern
ドキュメント任意。 チャンクの移行中に
_secondaryThrottle
がセカンダリを待機するために使用する 書込み保証 ( write concern ) を表すドキュメント。writeConcern
には_secondaryThrottle: true
が必要です。_waitForDelete
ブール値bounds
の値は次の形式をとります。[ { hashedField : <minValue> } , { hashedField : <maxValue> } ] 「チャンク移行」セクションでは、MongoDB 上のシャード間でチャンクがどのように移動されるかについて説明します。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
重要
このコマンドはサーバーレスインスタンスではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
Considerations
moveChunk
データの初期取り込みに合わせてシャーディングされた クラスター を準備したり、大規模な一括インポート操作を実行したりする場合など、特別な状況でのみ を使用してください。ほとんどの場合、バランサーがシャーディングされたクラスターにチャンクを作成し、バランスをとれるようにします。 詳細については、「 シャーディングされたクラスターで範囲を作成する」を参照してください。
動作
Indexes
moveChunk
にはすべてのインデックスがターゲットに存在している必要があります(つまり to
)は移行前にシャードを使用し、必要なインデックスが存在しない場合はエラーを返します。
Meta Data Error
moveChunk
{chunks
コレクションで別のメタデータ操作が進行中の場合、 は次のエラー メッセージを返します。
errmsg: "The collection's metadata lock is already taken."
moveChunk
の実行中にバランサー プロセスなどの別のプロセスがメタデータを変更すると、このエラーが表示されることがあります。 副作用のないmoveChunk
操作を再試行できます。
maxCatchUpPercentageBeforeBlockingWrites
Server Parameter
MongoDB5.0 以降では、転送されるチャンクの合計サイズ(MB maxCatchUpPercentageBeforeBlockingWrites
moveChunk
単位)と比較した場合、 操作中にまだ移行されていないデータの最大許可パーセンテージを指定するために、 を設定します。