Definición
shardDrainingStatusMuestra el estado de una partición en drenaje, ya sea que el balanceador todavía esté moviendo fragmentos a otras particiones en el clúster o que el proceso esté completo.
El comando devuelve un error si la partición no existe; de lo contrario, devuelve el estado de la operación de drenaje.
Para empezar a drenar una partición, consulta la
startShardDraining.Para detener el drenaje de una partición, consulte el comando
stopShardDraining.Para eliminar una partición drenada, consulte el comando
commitShardRemoval.Nuevo en la versión 8.3.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
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.
Nota
Este comando no es compatible en MongoDB Atlas. Consulta Modify your Atlas Sharded Cluster para añadir o remover particiones de tu clúster de Atlas.
Sintaxis
El comando tiene la siguiente sintaxis:
db.adminCommand( { shardDrainingStatus: <shard> } )
Campos de salida
Este comando devuelve la siguiente salida:
Campo | Tipo | Descripción |
|---|---|---|
| string | Proporciona la operación de extracción de corriente actual que está realizando el balanceador. |
| string | Proporciona el estado de la operación de drenaje. |
| string | Indica la partición de drenaje. |
| Documento | Muestra las tareas restantes que el balanceador debe realizar para drenar la partición. |
| long | Indica el número de fragmentos que aún quedan en la partición. |
| long | Indica el número de bases de datos aún en la partición. |
| long | Indica el número de grandes porciones que aún se encuentran en el fragmento. |
| long | Indica el número de colecciones que aún quedan en la partición. |
| string | Proporciona mensajes adicionales para el usuario. |
| arreglo | Indica las bases de datos que usan la partición que se está vaciando como la partición principal. Antes de poder remover la partición del clúster, debe mover manualmente estas bases de datos a una nueva partición utilizando el comando |
| arreglo | Indica colecciones no particionadas almacenadas en la partición de drenaje. Antes de poder remover la partición del clúster, debes mover manualmente estas colecciones a otra partición usando el comando |
Comportamiento
Requisitos de acceso
Si tienes habilitado authorization, debes tener el rol de clusterManager o cualquier rol que incluya la acción de removeShard.
Requisitos para la migración de la base de datos
Cada base de datos en un clúster tiene una partición primaria. Si la partición que desea drenar también es la primaria de una de las bases de datos del clúster, entonces debe mover manualmente las bases de datos a una nueva partición después de migrar todos los datos desde la partición. Consulta el comando movePrimary y el comando Remover particiones de un clúster para obtener más información.
Requisitos de migración de la colección
Las colecciones sin particiones se almacenan en shards individuales. Si una de estas colecciones está en la partición que deseas eliminar, primero debes migrar la colección a una diferente.
Para migrar una colección no particionada, consulta el comando moveCollection.
Ejemplos
Para comenzar a drenar una partición, utilice el método db.adminCommand() para ejecutar el comando startShardDraining:
db.adminCommand( { startShardDraining: "shard04" } )
Para comprobar el estado de la operación de vaciado, utilice el comando shardDrainingStatus:
db.adminCommand( { shardDrainingStatus: "shard04" } )
{ msg: "draining ongoing", state: "ongoing", remaining: { chunks: Long(2), dbs: Long(2), jumboChunks: Long(0), collectionsToMove: Long(2) }, shard: "shard04", note: "you need to call moveCollection for collectionsToMove and afterwards movePrimary for the dbsToMove", dbsToMove: [ "fizz", "buzz" ], collectionsToMove: [ "fizz.coll1", "buzz.coll1" ], ok: 1, operationTime: Timestamp(1575399086, 1655), $clusterTime: { clusterTime: Timestamp(1575399086, 1655), signature: { hash: BinData(0,"XBrTmjMMe82fUtVLRm13GBVtRE8="), keyId: Long("6766255701040824328") } } }