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

balancerCollectionStatus

Nesta página

  • Definição
  • Sintaxe
  • Controle de acesso
  • documento de saída
  • Exemplos
balancerCollectionStatus

Retorna um documento que contém informações sobre se as partes de uma collection fragmentada estão balanceados (ou seja, não precisam ser movidos) a partir do momento em que o comando é executado ou precisam ser movidos devido à drenagem de fragmentos, violação de zona ou desequilíbrio de pedaços entre fragmentos.

Você só pode emitir o balancerCollectionStatus contra o banco de dados admin .

Dica

Em mongosh, esse comando também pode ser executado por meio do método auxiliar sh.balancerCollectionStatus() .

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.

O comando tem a seguinte sintaxe:

db.adminCommand(
{
balancerCollectionStatus: "<db>.<collection>"
}
)

Especifique o namespace completo ("<db>.<collection>") da collection fragmentada.

mongosh fornece um método wrapper sh.balancerCollectionStatus().

Ao executar com controle de acesso, o usuário deve ter a ação de privilégio do enableSharding no reconhecimento de data center e/ou collection para executar o comando. Ou seja, um usuário deve ter uma role que conceda o seguinte privilégio:

{ resource: { db: <database>, collection: <collection> }, actions: [ "enableSharding" ] }

O papel do clusterManager embutido fornece os privilégios apropriados.

A seguir, um exemplo de documento retornado pelo comando:

{
"chunkSize": Long("128"),
"balancerCompliant" : false,
"firstComplianceViolation" : "chunksImbalance",
"ok" : 1,
"operationTime" : Timestamp(1583192967, 16),
"$clusterTime" : {
"clusterTime" : Timestamp(1583192967, 16),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
Campo
Descrição
"chunkSize"

Novidades na versão 5.3.

Um número inteiro que indica o tamanho do bloco em megabytes.

"balancerCompliant"
Um booleano que indica se os chunks não precisam ser movidos ( true ) ou precisam ser movidos ( false ).
"firstComplianceViolation"

Uma string que indica o motivo pelo qual as partes desse namespace precisam ser movidos. O campo só estará disponível se "balancerCompliant" for false .

Os valores possíveis são:

Valor
Descrição
"chunksImbalance"
A diferença no número de parte entre o fragmento com a maior parte de parte para a collection e o fragmento com o menor número de parte para a collection excede o limite de migração.
"defragmentingChunks"
O namespace consultado está passando atualmente pelo processo de desfragmentação de blocos. A desfragmentação pode ser acionada pelo comando configureCollectionBalancing .
"draining"
Uma operação de remoção de fragmento está em andamento e o MongoDB deve drenar partes do fragmento removido para outro(s) fragmento(s).
"zoneViolation"
As partes violam os intervalos de zona definidos para um shard.

Observação

Esse campo retorna apenas informações sobre a primeira violação observada pelo MongoDB. Pode haver migrações de chunk pendentes adicionais devido a um motivo diferente da relatada em firstComplianceViolation .

"details"

Um objeto que contém informações sobre o processo de desfragmentação em andamento. Esse objeto indica a fase atual da desfragmentação e quantos chunks faltam processar nessa fase. Para obter um exemplo de saída, consulte Processo de desfragmentação contínuo.

Este campo só é retornado quando firstComplianceViolation é defragmentingChunks.

Além dos campos de retorno específicos do comando, o comando também retorna o campo de status ok , o campo operationTime e o campo $clusterTime para a operação. Para obter detalhes sobre esses campos, consulte Resposta.

Para verificar se as partes de uma collection fragmentada test.contacts estão balanceados, conecte-se a uma instância mongos e emita o seguinte comando:

db.adminCommand( { balancerCollectionStatus: "test.contacts" } )

Se a parte para a collection não precisar ser movida, o comando retornará uma saída semelhante ao seguinte:

{
"chunkSize": Long("128"),
"balancerCompliant" : true,
"ok" : 1,
"operationTime" : Timestamp(1583193238, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1583193238, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}

Se o namespace da query estiver passando por desfragmentação de parte, o comando balancerCollectionStatus retornará uma saída semelhante a esta:

{
"chunkSize": Long("128"),
"balancerCompliant": false,
"firstComplianceViolation": "defragmentingChunks",
"details": {
"currentPhase": "moveAndMergeChunks",
"progress": { "remainingChunksToProcess": 1 }
}
}

Observação

A desfragmentação de parte ocorre em várias fases. O campo progress pertence somente à fase atual.

Para saber mais sobre:

Voltar

analyzeShardKey

Próximo

balancerStart