Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/
Manual do banco de dados
/ / /

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

Importante

Este comando não pode ser executado em instâncias compartilhadas ou sem servidor. Para obter mais informações, consulte Comandos não suportados.

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