deleteShard
定義
removeShard
の シャーディングされたクラスターからシャードを削除します。
removeShard
を実行すると、MongoDB は バランサー を使用してシャードのチャンクをクラスター内の他のシャードに移動し、シャードをドレイニングします。 シャードが空になると、MongoDB はクラスターからシャードを削除します。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
重要
このコマンドは、M 10 + クラスターまたはサーバーレス インスタンスではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
このコマンドの構文は、次のとおりです。
db.adminCommand( { removeShard : <shardToRemove> } )
動作
シャード削除中、クラスターのバックアップはありません
シャードの削除中は、 クラスター データをバックアップできません。
removeShard
操作の同時実行
複数のremoveShard
操作を進行させることができます。
アクセス要件
authorization
を有効にしている場合は、 clusterManager
ロールまたはremoveShard
アクションを含む任意のロールが必要です。
データベース移行要件
シャーディングされたクラスター内の各データベースには プライマリシャード があります。 削除するシャードがクラスターのデータベースの 1 つのプライマリでもある場合は、シャードからすべてのデータを移行した後、データベースを新しいシャードに手動で移動する必要があります。 詳細については、 movePrimary
コマンドと既存のシャーディングされたクラスターからシャードを削除するを参照してください。
チャンク バランシング
チャンクの分布が不均一なクラスター内のシャードを削除すると、バランサーはまずドレイン シャードからチャンクを削除し、次に残りの不均一なチャンクの分布のバランスをとります。
書込み保証 (write concern)
"majority"
は、mongos
コマンドの書込み保証( writeremoveShard
concern )を に変換します。
変更ストリーム
シャードを削除すると、開いている変更ストリームのカーソルが閉じてしまい、閉じた変更ストリームのカーソルが完全に再開できなくなることがあります。
例
mongosh
以降、 removeShard
操作は次のようになります。
db.adminCommand( { removeShard : "bristol01" } )
bristol01
を削除するシャードの名前に置き換えます。 removeShard
を実行すると、コマンドによって次のようなメッセージが返されます。
{ "msg" : "draining started successfully", "state" : "started", "shard" : "bristol01", "note" : "you need to drop or movePrimary these databases", "dbsToMove" : [ "fizz", "buzz" ], "ok" : 1, "operationTime" : Timestamp(1575398919, 2), "$clusterTime" : { "clusterTime" : Timestamp(1575398919, 2), "signature" : { "hash" : BinData(0,"Oi68poWCFCA7b9kyhIcg+TzaGiA="), "keyId" : NumberLong("6766255701040824328") } } }
バランサーによって、 bristol01
という名前のシャードからクラスター内の他のシャードへの チャンクの移行(「ドレイン」) が開始されます。 これらの移行は、クラスターに不要な負荷がかかるのを避けるために、低速で行われます。
The output includes the field dbsToMove
indicating the databases for which bristol01
is the primary shard. すべてのチャンクがシャードからドレインされた後、データベースに対してmovePrimary
を実行するか、またはこれらのデータベースを削除する必要があります。
注意
削除しているシャードがどのデータベースのプライマリシャードでもない場合、 dbsToMove
配列は空になり、 removeShard
は介入せずに移行を完了できます。
コマンドを再度実行すると、 removeShard
はプロセスの現在のステータスを返します。 たとえば、操作がongoing
状態の場合、コマンドは次のような出力を返します。
{ "msg" : "draining ongoing", "state" : "ongoing", "remaining" : { "chunks" : NumberLong(2), "dbs" : NumberLong(2), "jumboChunks" : NumberLong(0) }, "note" : "you need to drop or movePrimary these databases", "dbsToMove" : [ "fizz", "buzz" ], "ok" : 1, "operationTime" : Timestamp(1575399086, 1655), "$clusterTime" : { "clusterTime" : Timestamp(1575399086, 1655), "signature" : { "hash" : BinData(0,"XBrTmjMMe82fUtVLRm13GBVtRE8="), "keyId" : NumberLong("6766255701040824328") } } }
出力では、 remaining
フィールドには次のフィールドが含まれます。
フィールド | 説明 |
---|---|
chunks | 現在シャードに残っているチャンクの合計数。 |
dbs | プライマリ シャードがシャードであるデータベースの合計数。 これらのデータベースは dbsToMove 出力フィールドで指定されます。 |
jumboChunks |
|
引き続きremoveShard
コマンドのステータス( 残りのチャンク数が0
になるまで、 コマンドを再実行します)。
{ "msg" : "draining ongoing", "state" : "ongoing", "remaining" : { "chunks" : NumberLong(0), // All chunks have moved "dbs" : NumberLong(2), "jumboChunks" : NumberLong(0) }, "note" : "you need to drop or movePrimary these databases", "dbsToMove" : [ "fizz", "buzz" ], "ok" : 1, "operationTime" : Timestamp(1575400343, 1), "$clusterTime" : { "clusterTime" : Timestamp(1575400343, 1), "signature" : { "hash" : BinData(0,"9plu5B/hw4uWAgEmjjBP3syw1Zk="), "keyId" : NumberLong("6766255701040824328") } } }
すべてのチャンクがシャードからドレインされた後、 dbsToMove
がある場合は、それらのデータベースに対してmovePrimary
を実行するか、またはデータベースを削除します(関連するデータファイルを削除します)。
バランサーがシャードからすべてのチャンクの移動を完了し、 dbsToMove
を処理すると、 removeShard
は完了できます。 removeShard
を再度実行すると、次のような出力が返されます。
{ "msg" : "removeshard completed successfully", "state" : "completed", "shard" : "bristol01", "ok" : 1, "operationTime" : Timestamp(1575400370, 2), "$clusterTime" : { "clusterTime" : Timestamp(1575400370, 2), "signature" : { "hash" : BinData(0,"JjSRciHECXDBXo0e5nJv9mdRG8M="), "keyId" : NumberLong("6766255701040824328") } } }