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 emitir o balancerCollectionStatus contra o 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