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

balancerCollectionStatus

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Controle de acesso
  • documento de saída
  • Exemplo
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 enviar balancerCollectionStatus no banco de dados admin.

Dica

Em mongosh, esse comando também pode ser executado por meio do método assistente 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.

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

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:

{
"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

"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:

"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.
"draining"

Uma operação de remoção de fragmento está em andamento e o MongoDB deve drenar partes do fragmento removido para outros fragmentos.

Se o "firstComplianceViolation" responder com "draining", também pode haver migrações de parte pendentes devido a "chunksImbalance".

"zoneViolation"

As partes violam os intervalos de zona definidos para um shard.

Se o "firstComplianceViolation" responder com "zoneViolation", também pode haver migrações de parte pendentes devido a "chunksImbalance".

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 .

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:

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

Voltar

addShardToZone