Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

balancerCollectionStatus (comando de base de datos)

balancerCollectionStatus

Devuelve un documento que contiene información sobre si los fragmentos de una colección particionada están equilibrados (es decir, no necesitan ser trasladados) en el momento en que se ejecuta el comando o necesitan ser trasladados debido al drenaje de particiones, violación de la zona o desequilibrio de fragmentos entre las particiones.

Solo puedes emitir la balancerCollectionStatus contra la base de datos admin.

Tip

En mongosh, este comando también se puede ejecutar a través del sh.balancerCollectionStatus() método asistente.

Los métodos asistente son convenientes para usuarios de mongosh, pero es posible que no proporcionen el mismo nivel de información que los comandos de base de datos. En los casos en que no se necesite la conveniencia o se requieran campos de retorno adicionales, utiliza el comando de base de datos.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

El comando tiene la siguiente sintaxis:

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

Especifica el namespace completo ("<db>.<collection>") de la colección particionada.

mongosh proporciona un método contenedor sh.balancerCollectionStatus().

Al ejecutar con control de acceso, el usuario debe tener las enableSharding acciones de privilegio en base de datos y/o colección para ejecutar el comando. Es decir, un usuario debe tener un rol que conceda la siguiente privilegio:

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

El rol clusterManager incorporado proporciona los privilegios apropiados.

El siguiente es un ejemplo de un documento devuelto por el 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
Descripción

"chunkSize"

Novedades en la versión 5.3.

Un número entero que indica el tamaño del fragmento en megabytes.

"balancerCompliant"

Un booleano que indica si los fragmentos no necesitan ser movidos (true) o necesitan ser movidos (false).

"firstComplianceViolation"

Una string que indica la razón por la que los fragmentos de este namespace deben ser movidos. El campo solo está disponible si "balancerCompliant" es false.

Los valores posibles son:

"chunksImbalance"
La diferencia en el número de fragmentos entre la partición con más fragmentos para la colección y la partición con menos fragmentos para la colección supera el umbral de migración.
"defragmentingChunks"
El namespace consultado se encuentra actualmente en proceso de desfragmentación de fragmentos. La desfragmentación se puede activar con el comando configureCollectionBalancing.
"draining"
Se está llevando a cabo una operación de remoción de partición y MongoDB debe drenar los fragmentos de la partición eliminada hacia otras particiones.
"zoneViolation"
Los fragmentos violan los rangos de zona definidos para una partición.

Este campo solo devuelve información sobre la primera infracción observada por MongoDB. Puede haber migraciones de fragmentos adicionales pendientes debido a una razón diferente a la reportada en firstComplianceViolation.

"details"

Un objeto que contiene información sobre el proceso de desfragmentación en curso. Este objeto indica la fase actual de la desfragmentación y cuántos fragmentos quedan por procesar en esa fase. Para ver un ejemplo de salida, consulta Proceso de desfragmentación en curso.

Este campo solo se retorna cuando firstComplianceViolation es defragmentingChunks.

Además de los campos de retorno específicos del comando, el comando también devuelve el campo de estado ok, el campo operationTime y el campo $clusterTime para la operación. Para obtener detalles sobre estos campos, consulte Respuesta.

Para verificar si las particiones de una colección particionada test.contacts están actualmente equilibradas, conecta a una instancia mongos y ejecuta el siguiente comando:

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

Si los fragmentos de la colección no necesitan moverse, el comando devuelve una salida similar a la siguiente:

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

Si el espacio de nombres consultado está pasando por una desfragmentación de fragmentos, el comando balancerCollectionStatus devuelve una salida similar a la siguiente:

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

Nota

La desfragmentación de fragmentos se produce en varias fases. El campo progress solo afecta a la fase actual.

Para obtener más información sobre:

Volver

analizarClaveDeFragmento

En esta página