Docs Menu
Docs Home
/ /
particionado

balancerCollectionStatus (comando de base de datos)

balancerCollectionStatus

Devuelve un documento que contiene información sobre si los fragmentos de una colección fragmentada están equilibrados (es decir, no necesitan moverse) en el momento en que se ejecuta el comando o necesitan moverse debido al agotamiento de fragmentos, violación de zona o desequilibrio de fragmentos entre fragmentos.

Sólo puedes emitir el balancerCollectionStatus contra la base de datos admin.

Tip

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

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>"
}
)

Especifique el espacio de nombres completo ("<db>.<collection>") de la colección fragmentada.

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

Al ejecutar con control de acceso, el usuario debe tener el privilegio enableSharding para ejecutar el comando en la base de datos o la colección. Es decir, debe tener un rol que otorgue el 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 entero que indica el tamaño del fragmento en megabytes.

"balancerCompliant"

Un valor booleano que indica si es necesario mover los fragmentos (true) o si es necesario moverlos (false).

"firstComplianceViolation"

Una cadena que indica el motivo por el que se deben mover los fragmentos de este espacio de nombres. El campo solo está disponible si "balancerCompliant" es false.

Los valores posibles son:

"chunksImbalance"
La diferencia en la cantidad de fragmentos entre el fragmento con la mayor cantidad de fragmentos para la colección y el fragmento con la menor cantidad de fragmentos para la colección excede el umbral de migración.
"defragmentingChunks"
El espacio de nombres consultado se encuentra actualmente en proceso de desfragmentación de fragmentos. La desfragmentación se puede activar con el configureCollectionBalancing comando.
"draining"
Se está realizando una operación de eliminación de fragmento y MongoDB debe drenar fragmentos del fragmento eliminado a otros fragmentos.
"zoneViolation"
Los fragmentos violan los rangos de zona definidos para un fragmento.

Este campo solo devuelve información sobre la primera infracción detectada por MongoDB. Es posible que haya migraciones de fragmentos pendientes adicionales por un motivo diferente al informado firstComplianceViolation en.

"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 obtener un ejemplo de salida, consulte Proceso de desfragmentación en curso.

Este campo solo se devuelve cuando firstComplianceViolation es defragmentingChunks.

Además de los campos de retorno específicos del comando, este también devuelve ok los operationTime campos de estado, y $clusterTime de la operación. Para obtener más información 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 un resultado similar al siguiente:

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

Nota

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

Volver

añadirFragmentoAZona

En esta página