定義
startShardDrainingシャードからチャンクをドレインプロセスを開始し、シャーディングされたクラスターから排除する準備をします。
コマンドの実行時に、指定されたシャードを空にすることがバランサーに指示されます。非同期に、バランサーはシャードからクラスター内の他のシャードへのチャンクの移動を開始します。バランサーがこのプロセスを完了すると、シャードにはデータが含まれず、クラスターから安全に削除できるようになります。
注意
シャードからチャンクを移動するには、
startShardDrainingでバランサーを有効にする必要があります。バランサーが無効の場合、チャンクは移行されず、shardDrainingStatusはシャード上の残りの作業を報告し続けます。このコマンドは、シャードが存在しない場合はエラーを返し、そうでない場合は
okを返します。ドレインシャードのステータスを確認するには、
shardDrainingStatusコマンドを使用します。シャードの動作を停止するには、
stopShardDrainingコマンドを参照してください。ドレイン シャードを削除するには、
commitShardRemovalコマンドを参照してください。バージョン8.3の新機能。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
注意
このコマンドは MongoDB Atlasではサポートされていません。See Atlas クラスターからシャードを追加または削除するには、「Atlasシャードクラスタの変更」を参照してください。
構文
このコマンドの構文は、次のとおりです。
db.adminCommand( { startShardDraining: <shardToDrain> } )
動作
アクセス要件
authorizationを有効にしている場合は、 clusterManagerロールまたはremoveShardアクションを含む任意のロールが必要です。
シャードドレイン中にクラスターのバックアップがありません
シャードをドレインいる間は、クラスターをバックアップすることはできません。
ドレイン シャードの同時実行操作
一度に複数のシャードドレイン操作を進行することができます。
データベース移行要件
シャーディングされたクラスター内の各データベースにはプライマリシャードがあります。ドレインするシャードが、クラスターのデータベースの 1 つのプライマリでもある場合は、シャードからすべてのデータを移行した後、データベースを新しいシャードに手動で移動する必要があります。See the movePrimary command and the シャードからクラスターを削除する for more information.
コレクション移行要件
シャーディングされていないコレクションは、個々のシャードに保存されます。これらのコレクションの 1 つが除くシャード上にある場合は、まずそのコレクションを別のシャードに移行する必要があります。
シャーディングされていないコレクションを移行するには、moveCollection コマンドをご覧ください。
チャンク バランシング
チャンク分布が不均一なクラスター内のシャードをドレインすると、バランサーはまずドレインシャードからチャンクを削除し、次に残りの不均一なチャンク分布のバランスをとります。
書込み保証 (write concern)
mongos は、書込み保証 (write concern) を startShardDraining コマンドの"majority" に変換します。
変更ストリーム
シャードをドレインすると、開いている変更ストリームのカーソルが閉じてしまい、閉じた変更ストリームのカーソルが完全に再開できなくなることがあります。
DDL 操作
クラスターが DDL 操作(reshardCollection など、コレクションを変更する操作)を実行しているときに startShardDraining を実行すると、シャードドレインは同時 DDL 操作が完了した後にのみ実行されます。
例
シャードのドレインを開始するには、db.adminCommand() メソッドを使用します。
db.adminCommand( { startShardDraining: "shard04" } )