moveChunk
Definição
moveChunk
Comando administrativo interno. Move chunks entre shards. Emita o comando
moveChunk
por meio de uma instância domongos
ao usar o banco de banco de dados admin. Use os seguintes formulários:Dica
Em
mongosh
, esse comando também pode ser executado por meio do método auxiliarsh.moveChunk()
.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.db.adminCommand( { moveChunk : <namespace> , find : <query> , to : <string>, forceJumbo: <boolean>, _secondaryThrottle : <boolean>, writeConcern: <document>, _waitForDelete : <boolean> } ) Outra opção é:
db.adminCommand( { moveChunk : <namespace> , bounds : <array> , to : <string>, forceJumbo: <boolean>, _secondaryThrottle : <boolean>, writeConcern: <document>, _waitForDelete : <boolean> } ) O comando
moveChunk
tem os seguintes campos:CampoTipoDescriçãomoveChunk
stringO namespace da collection onde a parte existe. Especifique o namespace completo da collection, incluindo o nome do reconhecimento de data center.find
documentoUma correspondência de igualdade na chave de fragmento que especifica o valor da chave de fragmento da parte a ser movida. Especifique o campobounds
ou o campofind
, mas não ambos. Não use o campofind
para selecionar parte em collection que usam uma chave de fragmento com hash.bounds
arrayOs limites de uma parte específica a ser movida. A array deve consistir em dois documento que especificam os valores da chave de parte inferior e superior de uma parte a ser movido. Especifique o campobounds
ou o campofind
, mas não ambos. Usebounds
para selecionar parte em collection que usam uma chave de fragmento com hash.to
stringO nome do shard de destino da parte.booleanoOpcional. Um sinalizador que determina se o comando pode mover uma parte grande demais para ser migrado. A parte pode ou não ser rotulada como jumbo.
Se
true
, o comando pode mover a parte.Se
false
, o comando não pode mover a parte.
O padrão é
false
.AVISO:
O comando
moveChunk
comforceJumbo=true
blocos lê e escreve operações na coleção.Essa opção faz com que o shard migre chunks mesmo quando eles são maiores do que o tamanho configurado do chunk. A coleção permanece indisponível durante a migração.
Para migrar esses grandes blocos sem esse longo período de bloqueio, consulte Intervalos de equilíbrio que excedem o limite de tamanho .
_secondaryThrottle
booleanoOpcional. Para WiredTiger, o padrão é
false
.Se
true
, por padrão, cada movimentação de documento durante a migração de bloco se propaga para pelo menos um secundário antes que o balanceador prossiga com o próximo documento. Isso é equivalente a uma referência de escrita de{ w: 2 }
.Use a opção
writeConcern
para especificar uma referência de escrita diferente.Se
false
, o balanceador não aguarda a replicação em um secundário e, em vez disso, continua com o próximo documento.
Para obter mais informações, consulte Acelerador secundário.
writeConcern
documentoOpcional. Um documento que expressa a referência de escrita que o
_secondaryThrottle
usará para aguardar secundários durante a migração de partes.writeConcern
requer_secondaryThrottle: true
._waitForDelete
booleanoOpcional. Opção interna para fins de teste. O padrão éfalse
. Se definido comotrue
, a fase de exclusão de uma operaçãomoveChunk
bloqueia.O valor de
bounds
assume o formato:[ { hashedField : <minValue> } , { hashedField : <maxValue> } ] A seção de migração de parte descreve como as partes se movem entre shards no MongoDB.
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
Importante
Este comando não é suportado em instâncias sem servidor. Para obter mais informações, consulte Comandos não suportados.
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
Considerações
Use o moveChunk
somente em circunstâncias especiais, como preparar seu cluster fragmentado para uma ingestão inicial de dados ou uma grande operação de importação em massa. Na maioria dos casos, permite ao balancer criar e equilibrar chunks em clusters fragmentados. Consulte Criar intervalos em um cluster fragmentado para obter mais informações.
Comportamento
Indexes
moveChunk
exige que todos os índices existam no destino (ou seja, to
) antes da migração e retorna um erro se um índice necessário não existir.
Erro de metadados
moveChunk
retorna a seguinte mensagem de erro se outra operação de metadados estiver em andamento na coleção chunks
:
errmsg: "The collection's metadata lock is already taken."
Se outro processo, como um processo de balancer, alterar os metadados enquanto moveChunk
estiver em execução, você poderá ver esse erro. Você pode tentar novamente a operação moveChunk
sem efeitos colaterais.
maxCatchUpPercentageBeforeBlockingWrites
Server Parameter
A partir de MongoDB 5.0, você pode configurar o maxCatchUpPercentageBeforeBlockingWrites
para especificar a porcentagem máxima permitida de dados ainda não migrados durante uma operação do moveChunk
quando comparado ao tamanho total (em MBs) do bloco que está sendo transferido.