Definição
startShardDrainingInicia o processo de drenagem de chunks de um shard para prepará-lo para a remoção de um cluster fragmentado.
Quando o comando é executado, ele informa ao balanceador que você deseja drenar o shard fornecido. De forma assíncrona, o balanceador então começa a mover chunks do shard para outros shards no cluster. Quando o balanceador conclui este processo, o fragmento não contém dados e pode ser removido com segurança do cluster.
Observação
O balanceador deve estar habilitado para
startShardDrainingmover chunks para fora do shard. Se o balanceador estiver desativado, nenhum bloco será migrado eshardDrainingStatuscontinuará relatando o trabalho restante no fragmento.O comando retorna um erro se o shard não existir, caso contrário, ele retorna
ok.Para verificar o status de um shard de drenagem , use o
shardDrainingStatuscomando.Para parar de drenar um shard, consulte o
stopShardDrainingcomando.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( { startShardDraining: <shardToDrain> } )
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 .
Nenhum backup de cluster durante a drenagem de fragmentos
Não é possível fazer backup do cluster durante a drenagem do shard.
Operações simultâneas de shard de drenagem
Você pode ter mais de uma operação de drenagem de fragmentos em andamento ao mesmo tempo.
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.
Balanceamento de partes
Quando você drena um fragmento em um cluster com uma distribuição desigual de fragmentos, o balanceador primeiro remove os fragmentos do fragmento de drenagem e, em seguida, equilibra a distribuição desigual de fragmentos restante.
Escreva preocupação
mongos converte a preocupação de startShardDraining gravação do "majority" comando para.
Fluxos de alterações
A drenagem de um shard pode fazer com que um cursor de fluxo de alteração aberto feche e o cursor de fluxo de alteração fechado pode não ser totalmente retomável.
Operações de DDL
Se você startShardDraining executar enquanto o cluster estiver executando uma operação DDL (operação que modifica uma collection como reshardCollection), a drenagem de shards só será executada após a conclusão da operação DDL simultânea.
Exemplos
Para iniciar a drenagem de um fragmento, use o db.adminCommand() método:
db.adminCommand( { startShardDraining: "shard04" } )