Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

sh.unshardCollection

Nesta página

  • Definição
  • Sintaxe
  • Compatibilidade
  • Considerações
  • Requisitos
  • Exemplos
  • Saiba mais
sh.unshardCollection( namespace, shardID )

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.

Importante

Método mongosh

Esta página documenta um método mongosh. Esta não é a documentação de comandos de banco de dados nem drivers específicos de linguagem, como Node.js.

Para o comando do banco de dados, consulte o comando unshardCollection.

Para drivers de API do MongoDB, consulte a documentação do driver do MongoDB específica da linguagem.

O método sh.unshardCollection exige que você especifique o shard para receber os dados da collection. Com o comando unshardCollection , se você não especificar o shard de destino, o cluster selecionará automaticamente o shard com menos dados.

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.

sh.unshardCollection tem a seguinte sintaxe:

sh.unshardCollection( namespace, shardID )
Parâmetro
Tipo
Descrição
namespace
string
Especifica o banco de dados de dados e a collection a serem desfragmentadas.
shardID
string
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.

Esse método 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.

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%.

Este exemplo desfragmenta uma collection denominada inventory no banco de banco de dados app para o shard shard02 .

sh.unshardCollection( "app.inventory", "shard02" )

Para obter uma lista dos IDs de shard disponíveis, execute sh.status(). Para obter detalhes, consulte sh.status() Saída.

Voltar

sh.stopBalancer