Definição
balancerCollectionStatusRetorna 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.
You can only issue the
balancerCollectionStatusagainst theadmindatabase.Dica
In
mongosh, this command can also be run through thesh.balancerCollectionStatus()helper method.Helper methods are convenient for
mongoshusers, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.
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
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
Sintaxe
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()
Controle de acesso
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.
documento de saída
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" : Long(0) } } }
Campo | Descrição |
|---|---|
| Novidades na versão 5.3. Um número inteiro que indica o tamanho do bloco em megabytes. |
| Um booleano que indica se os chunks não precisam ser movidos ( |
| Uma string que indica o motivo pelo qual as partes desse namespace precisam ser movidos. O campo só estará disponível se Os valores possíveis sã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 |
| 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 |
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.
Exemplos
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" : Long(0) } } }
Processo de desfragmentação contínuo
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:
Monitoramento da desfragmentação, consulte Monitorar a desfragmentação de uma collection fragmentada.
Desfragmentando collection fragmentadas, consulte Desfragmentar collection fragmentadas.