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

moveRange

項目一覧

  • 定義
  • 互換性
  • 構文
  • コマンドフィールド
  • Considerations
moveRange

バージョン 6.0 で追加。

シャード 間で の 範囲 を移動します。moveRangemongos管理データベース を使用しながら、 インスタンスで コマンドを実行します。

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

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

注意

このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、 「サポートされていないコマンド」を参照してください。

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

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

このコマンドの構文は、次のとおりです。

db.adminCommand(
{
moveRange: <namespace>,
toShard: <ID of the recipient shard>,
min: <min key of the range to move>,
max: <max key of the range to move>, // optional
forceJumbo: <bool>, // optional
waitForDelete: <bool>, // optional
writeConcern: <write concern>, // optional
secondaryThrottle: <bool> // optional
}
)

このコマンドは、次のフィールドを使用します。

フィールド
タイプ
説明
toShard
string
受信者シャードの ID。
min
キー
移動する範囲の最小キー。
max
キー

任意。

移動する範囲の最大キー。 maxを指定しない場合、シャードキーminを含むチャンクCがある場合、 maxは次のように決定されます。

  • minからmax(C)の範囲のデータ サイズが、コレクションごとのチャンク サイズまたはデフォルトのチャンク サイズより小さい場合、チャンクの最大値はmax = max(C)として選択されます。

  • それ以外の場合、キーmax < max(C)は、 maxが構成されたチャンク サイズによって異なります。

ブール値

任意。

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

  • trueの場合、 コマンドは範囲を移動できます。

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

デフォルトは false です。

警告:

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

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

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

writeConcern
ドキュメント

任意。

書込み保証 ( write concern) のあるドキュメント。

デフォルトはw: majorityです。

secondaryThrottle
ブール値

任意。

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

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

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

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

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

次のようなシナリオでのみmoveRangeを使用してください。

  • データの初期取り込み

  • 大規模な一括インポート操作

ほとんどの場合、バランサーがシャーディングされたクラスターに範囲を作成し、範囲を作成できるようにします。

Tip

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

次の例では、次の内容を含む コレクションを使用します。

  • シャードキー x

  • 128MB の チャンク サイズ に設定

  • 境界のあるチャンク: [x: 0, x: 100)

次の表は、 minmaxをさまざまな値に設定した結果を示しています。

min
max
結果
0
100
範囲内のすべてのドキュメントを受信者シャードに移動します。
10
30

3 つのサブ範囲を作成します。

  • [x: 0, x: 10)

  • [x: 10, x: 30)

  • [x: 30, x: 100)

[x: 10, x: 30)内のすべてのドキュメントを受信者シャードに移動します。

0
20

2 つのサブ範囲を作成します。

  • [x: 0, x: 20)

  • [x: 20, x: 100)

[x: 0, x: 20)内のすべてのドキュメントを受信者シャードに移動します。

40
100

2 つのサブ範囲を作成します。

  • [x: 0, x: 40)

  • [x: 40, x: 100)

[x: 40, x: 100)内のすべてのドキュメントを受信者シャードに移動します。

次の表は、 minをさまざまな値に設定した結果を示しています。

min
キー範囲内のデータ量
結果
0
キーx: 0x: 100の間に含まれる 128 MB 未満。
範囲内のすべてのドキュメントを受信者シャードに移動します。
10
キーx: 0x: 100の間に含まれる 128 MB 未満。

2 つのサブ範囲を作成します。

  • [x: 0, x: 10)

  • [x : 10, x: 100)

[x: 10, x: 100)内のすべてのドキュメントを受信者シャードに移動します。

10
キーx: 10x: 30の間に含まれる 128 MB 。

3 つのサブ範囲を作成します。

  • [x: 0, x: 10)

  • [x: 10, x: 30)

  • [x: 30, x: 100)

[x: 10, x: 30)内のすべてのドキュメントを受信者シャードに移動します。

戻る

movePrimary