定義
shardDrainingStatusバランサーがまだチャンクをクラスター内の他のシャードに移動しているか、プロセスが完了しているかにかかわらず、ドレインシャードのステータスを表示します。
コマンドは、シャードが存在しない場合はエラーを返し、そうでない場合はドレイン操作のステータスを返します。
シャードのドレインを開始するには、
startShardDrainingコマンドを参照してください。シャードのドレインを停止するには、
stopShardDrainingコマンドを参照してください。ドレイン シャードを削除するには、
commitShardRemovalコマンドを参照してください。バージョン8.3の新機能。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
注意
このコマンドは MongoDB Atlasではサポートされていません。See Atlas クラスターからシャードを追加または削除するには、「Atlasシャードクラスタの変更」を参照してください。
構文
このコマンドの構文は、次のとおりです。
db.adminCommand( { shardDrainingStatus: <shard> } )
出力フィールド
このコマンドは、次の出力を返します。
フィールド | タイプ | 説明 |
|---|---|---|
| string | バランサーによって実行されている現在のドレイン操作を提供します。 |
| string | ドレイン操作のステータスを提供します。 |
| string | ドレインシャードを示します。 |
| ドキュメント | シャードを空にするためにバランサーが実行する必要がある残りのタスクを表示します。 |
| long | シャード上にまだ存在するチャンクの数を示します。 |
| long | まだシャード上にあるデータベースの数を示します。 |
| long | シャード上にまだ存在する大きなチャンクの数を示します。 |
| long | まだシャード上にあるコレクションの数を示します。 |
| string | ユーザーに追加のメッセージを提供します。 |
| 配列 | ドレインシャード をプライマリシャードとして使用するデータベースを示します。クラスターからシャードを削除する前に、 |
| 配列 | ドレインされていないコレクションを示します。クラスターからシャードを削除する前に、 コマンドを使用してこれらのコレクションを別のシャードに手動で移動する必要があります。 |
動作
アクセス要件
authorizationを有効にしている場合は、 clusterManagerロールまたはremoveShardアクションを含む任意のロールが必要です。
データベース移行要件
シャーディングされたクラスター内の各データベースにはプライマリシャードがあります。ドレインするシャードが、クラスターのデータベースの 1 つのプライマリでもある場合は、シャードからすべてのデータを移行した後、データベースを新しいシャードに手動で移動する必要があります。詳細については、movePrimary コマンドとシャードクラスタからシャードを削除する を参照してください。
コレクション移行要件
シャーディングされていないコレクションは、個々のシャードに保存されます。これらのコレクションの 1 つが削除するシャード上にある場合は、まずそのコレクションを別のシャードに移行する必要があります。
シャーディングされていないコレクションを移行するには、moveCollection コマンドをご覧ください。
例
シャードのドレインを開始するには、db.adminCommand() メソッドを使用してstartShardDraining コマンドを実行します。
db.adminCommand( { startShardDraining: "shard04" } )
ドレイン操作のステータスを確認するには、shardDrainingStatus コマンドを使用します。
db.adminCommand( { shardDrainingStatus: "shard04" } )
{ msg: "draining ongoing", state: "ongoing", remaining: { chunks: Long(2), dbs: Long(2), jumboChunks: Long(0), collectionsToMove: Long(2) }, shard: "shard04", note: "you need to call moveCollection for collectionsToMove and afterwards movePrimary for the dbsToMove", dbsToMove: [ "fizz", "buzz" ], collectionsToMove: [ "fizz.coll1", "buzz.coll1" ], ok: 1, operationTime: Timestamp(1575399086, 1655), $clusterTime: { clusterTime: Timestamp(1575399086, 1655), signature: { hash: BinData(0,"XBrTmjMMe82fUtVLRm13GBVtRE8="), keyId: Long("6766255701040824328") } } }