moveCollection
Nesta página
Definição
moveCollection
Novidades na versão 8.0.
Move uma única coleção não fragmentada para umfragmento diferente. Execute
moveCollection
com uma instânciamongos
enquanto usa o banco de banco de dados admin.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Observação
Este comando não está disponível no Atlas Shared Tier ou no Atlas Serverless.
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
Restrições
Você não pode usar moveCollection
para:
Sintaxe
O comando tem a seguinte sintaxe:
db.adminCommand( { moveCollection: "<database>.<collection>", toShard: "<ID of the recipient shard>", } )
Campos de comando
O comando utiliza os seguintes campos:
Campo | Tipo | Descrição |
---|---|---|
moveCollection | string | Banco de dados e nome da coleção a ser movida. |
toShard | string | ID do shard do destinatário. |
Considerações
moveCollection
só pode ser executado em clusters fragmentados.moveCollection
só pode mover collections não fragmentadas.moveCollection
só pode mover uma única collection por vez.moveCollection
tem uma duração mínima de 5 minutos.Os índices do Atlas Search precisam ser reconstruídos após
moveCollection
execuções.Você não pode fazer alterações na topologia , como adicionar ou remover fragmentos ou transição entre servidores de configuração incorporados e dedicados, até que a
moveCollection
seja concluída.Não é possível executar as seguintes operações na collection que está sendo movida enquanto
moveCollection
estiver em andamento:Você não pode executar as seguintes operações no cluster enquanto o
moveCollection
estiver em andamento:As compilações de índice que ocorrem enquanto
moveCollection
está em andamento podem falhar silenciosamente.Não crie índices enquanto
moveCollection
estiver em andamento.Não chame
moveCollection
se houver construções de índice em andamento.
Requisitos
Antes de mover 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%.
Importante
Esses requisitos não são exigidos pelo banco de dados. Uma falha na alocação de recursos suficientes pode resultar em:
o banco de dados ficar sem espaço e desligando
redução do desempenho
a operação demora mais que o esperado
Se o seu aplicação tiver períodos com menos tráfego, execute esta operação na coleção durante esse período, se possível.
Exemplo
Este exemplo move uma collection não fragmentada chamada inventory
no banco de banco de dados app
para o shard shard02
.
db.adminCommand( { moveCollection: "app.inventory", toShard: "shard02" } )
Para obter uma lista dos IDs de shard disponíveis, execute sh.status()
. Para obter detalhes, consulte sh.status() Saída.