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

deleteShard

項目一覧

  • 定義
  • 互換性
  • 構文
  • 動作
removeShard

の シャーディングされたクラスターからシャードを削除します。 removeShardを実行すると、MongoDB は バランサー を使用してシャードのチャンクをクラスター内の他のシャードに移動し、シャードをドレイニングします。 シャードが空になると、MongoDB はクラスターからシャードを削除します。

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

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

重要

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

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

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

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

db.adminCommand(
{
removeShard : <shardToRemove>
}
)

シャードの削除中は、 クラスター データをバックアップできません。

複数のremoveShard操作を進行させることができます。

authorizationを有効にしている場合は、 clusterManagerロールまたはremoveShardアクションを含む任意のロールが必要です。

シャーディングされたクラスター内の各データベースには プライマリシャード があります。 削除するシャードがクラスターのデータベースの 1 つのプライマリでもある場合は、シャードからすべてのデータを移行した後、データベースを新しいシャードに手動で移動する必要があります。 詳細については、 movePrimaryコマンドと既存のシャーディングされたクラスターからシャードを削除するを参照してください。

チャンクの分布が不均一なクラスター内のシャードを削除すると、バランサーはまずドレイン シャードからチャンクを削除し、次に残りの不均一なチャンクの分布のバランスをとります。

Tip

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

"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

chunksの合計数のうち、ジャンボである数値。

jumboChunksが 0 より大きい場合は、 jumboChunksのみがシャード上に残るまで待ちます。 ジャンボ チャンクのみが残ったら、ドレイン が完了する前に ジャンボ フラグを手動でクリアする必要があります。 「 jumboフラグのクリア 」を参照してください。

jumboフラグがクリアされると、バランサーはこれらのチャンクを移行できます。 移行手順の詳細については、「範囲の移行手順 」を参照してください。

引き続き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")
}
}
}

戻る

refineCollectionShardKey