Definição
shardDrainingStatusMostra o status de um shard de drenagem , se o balanceador ainda está movendo chunks para outros shards no cluster ou se o processo está concluído.
O comando retorna um erro se o shard não existir, caso contrário, retorna o status da operação de drenagem .
Para iniciar a drenagem de um shard, consulte o
startShardDrainingcomando.Para interromper a drenagem de um shard, consulte o comando
stopShardDraining.Para remover um shard drenado, consulte o
commitShardRemovalcomando.Novidades na versão 8.3.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Observação
Este comando não é suportado no MongoDB Atlas. Consulte Modificar seu Atlas Cluster Sharded para adicionar ou remover shards do seu Atlas cluster.
Sintaxe
O comando tem a seguinte sintaxe:
db.adminCommand( { shardDrainingStatus: <shard> } )
Campos de Saída
Este comando retorna a seguinte saída:
Campo | Tipo | Descrição |
|---|---|---|
| string | Fornece a operação de drenagem atual que está sendo executada pelo balanceador. |
| string | Fornece o status da operação de drenagem . |
| string | Indica o shard de drenagem . |
| documento | Mostra as tarefas restantes que o balanceador deve executar para drenar o shard. |
| long | Indica o número de chunks que ainda estão no shard. |
| long | Indica o número de bancos de dados que ainda estão no shard. |
| long | Indica o número de chunks grandes ainda no shard. |
| long | Indica o número de collections que ainda estão no shard. |
| string | Fornece uma mensagem adicional para o usuário. |
| array | Indica bancos de dados que usam o shard de drenagem como fragmento primário. Antes de remover o fragmento do cluster, você deve mover manualmente esses bancos de dados para um novo fragmento usando o |
| array | Indica collections não fragmentadas armazenadas no shard de drenagem . Antes de remover o fragmento do cluster, você deve mover manualmente essas coleções para outro fragmento usando o |
Comportamento
Requisitos de acesso
Se você tiver authorization habilitado, deverá ter a função clusterManager ou qualquer função que inclua a ação removeShard .
Requisitos de migração de reconhecimento de data center
Cada banco de dados em um cluster fragmentado tem um fragmento primário. Se o fragmento que você deseja drenar também for o principal de um dos bancos de dados do cluster, você deverá mover manualmente os bancos de dados para um novo fragmento depois de migrar todos os dados do fragmento. Consulte movePrimary o comando e Remover fragmentos de um cluster fragmentado para obter mais informações.
Requisitos de migração de coleção
As coleções não fragmentadas são armazenadas em shards individuais. Se uma dessas coleções estiver no fragmento que você deseja remover, primeiro você deverá migrar a coleção para um fragmento diferente.
Para migrar uma collection não fragmentada, consulte o moveCollection comando.
Exemplos
Para iniciar a drenagem de um shard, use o método db.adminCommand() startShardDraining para executar o comando:
db.adminCommand( { startShardDraining: "shard04" } )
Para verificar o status da operação de drenagem , use o comando 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") } } }