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

moveChunk

Nesta página

  • Definição
  • Compatibilidade
  • Considerações
  • Comportamento
moveChunk

Comando administrativo interno. Move chunks entre shards. Emita o comando moveChunk por meio de uma instância do mongos 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 auxiliar sh.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:

Campo
Tipo
Descrição
moveChunk
string
O namespace da collection onde a parte existe. Especifique o namespace completo da collection, incluindo o nome do reconhecimento de data center.
find
documento
Uma correspondência de igualdade na chave de fragmento que especifica o valor da chave de fragmento da parte a ser movida. Especifique o campo bounds ou o campo find , mas não ambos. Não use o campo find para selecionar parte em collection que usam uma chave de fragmento com hash.
bounds
array
Os 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 campo bounds ou o campo find , mas não ambos. Use bounds para selecionar parte em collection que usam uma chave de fragmento com hash.
to
string
O nome do shard de destino da parte.
booleano

Opcional. 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 com forceJumbo=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
booleano

Opcional. 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
documento

Opcional. 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
booleano
Opcional. Opção interna para fins de teste. O padrão é false. Se definido como true, a fase de exclusão de uma operação moveChunk 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.

Dica

Veja também:

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

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.

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.

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.

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.

Voltar

mesclarAllChunksOnShard