Menu Docs
Página inicial do Docs
/ /

unshardCollection (comando de banco de dados)

unshardCollection

Desfragmenta uma collection fragmentada existente e move os dados da collection para um único shard. Quando você desfragmenta uma collection, a collection não pode ser particionada em váriosshards e a chave de shard é removida.

Novidades na versão 8.0.

Dica

Em mongosh, este comando também pode ser executado por meio de sh.unshardCollection().

Os métodos auxiliares são práticos para os usuários mongosh, mas podem não retornar o mesmo nível de informações que os comandos do banco de dados. Nos casos em que a praticidade não for necessária ou os campos de retorno adicionais forem necessários, use o comando de banco de dados.

Este comando deve ser executado no banco de banco de dados admin .

Se a collection tiver uma configuração de zona aplicada, você deverá primeiro remover as associações de intervalo e os shards da zona antes de desfragmentar a collection. Para obter mais informações, consulte Não fragmentar zonas.

Observação

A desfragmentação de uma collection é uma operação de gravação intensiva que pode resultar em uma taxa de crescimento de oplog maior. Para ajudar a mitigar isso, considere as seguintes alterações de configuração:

  • Para evitar o crescimento ilimitado do oplog, defina um tamanho fixo de oplog.

  • Para reduzir a chance de os secundários se tornarem obsoletos, aumente o tamanho do oplog.

Para obter mais detalhes, consulte o oplog Conjunto de réplicas.

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

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

Observação

Esta tarefa não está disponível nas camadas gratuitas ou flexíveis do MongoDB Atlas .

Não é possível usar unshardCollection para collections de Queryable Encryption.

db.adminCommand( {
unshardCollection: "<database>.<collection>",
toShard: "<shard-id>"
} )
Campo
Tipo
necessidade
Descrição

unshardCollection

string

Obrigatório

Especifica o banco de dados de dados e a collection a serem desfragmentadas.

toShard

string

Opcional

Especifica o ID de shard do destinatário. À medida que o MongoDB desfragmenta a coleta, ele move os dados da coleta de seus fragmentos atuais para esse fragmento específico.

Se não especificado, o cluster seleciona o shard com a menor quantidade de dados.

  • unshardCollection só pode ser executado em clusters fragmentados.

  • unshardCollection só pode operar em collections fragmentadas.

  • unshardCollection só pode operar em uma única collection por vez.

  • unshardCollection tem uma duração mínima de 5 minutos.

  • É necessário reconstruir os índices do MongoDB Search após a execução de unshardCollection.

  • Você não pode fazer alterações na topologia , como adicionar ou remover fragmentos ou fazer a transição entre servidores de configuração incorporados e dedicados, até que unshardCollection seja concluído.

  • Não é possível executar as seguintes operações na collection que está sendo desfragmentada enquanto unshardCollection estiver em andamento:

  • Você não pode executar as seguintes operações no cluster enquanto o unshardCollection estiver em andamento:

  • As compilações de índice que ocorrem enquanto unshardCollection está em andamento podem falhar silenciosamente.

    • Não crie índices enquanto unshardCollection estiver em andamento.

    • Não chame unshardCollection se houver construções de índice em andamento.

  • Para evitar erros, o MongoDB descarta automaticamente as zonas da sua coleção quando você executa o unshardCollection.

Antes de desfragmentar sua collection, certifique-se de atender aos seguintes requisitos:

  • Seu aplicação pode tolerar um período de dois segundos em que a collection afetada bloqueia as gravações. Durante o período em que as gravações são bloqueadas, seu aplicação experimenta um aumento na latência.

  • Seu banco de dados atende aos seguintes requisitos de recursos:

    • Verifique se o fragmento para o qual você está movendo a collection tem espaço de armazenamento suficiente para a collection e seus índices. O fragmento de destino exige pelo menos ( Collection storage size + Index Size ) * 2 bytes disponíveis.

    • Certifique-se de que sua capacidade de E/S esteja abaixo de 50%.

    • Certifique-se de que a carga da CPU esteja abaixo de 80%.

Para desfazer a fragmentação de uma collection que usa fragmentação de zona , você deve primeiro parar o balanceador e, em seguida, remover o intervalo e o shard da zona.

O exemplo a seguir desfragmenta a collection sales.eu_accounts :

db.adminCommand( {
unshardCollection: "sales.eu_accounts"
} )

O exemplo a seguir fragmenta as collections sales.us_accounts e coloca os dados da collection em shard1:

db.adminCommand( {
unshardCollection: "sales.eu_accounts",
toShard: "shard1"
} )

Voltar

unsetSharding

Nesta página