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

commitShardRemoval (comando de base de datos)

commitShardRemoval

Elimina una partición de un clúster.

Para ejecutar este comando, primero se debe drenar la partición con el Comando startShardDraining. Este comando indica al balanceador que mueva fragmentos de la partición a otras particiones en el clúster. También debe mover manualmente las bases de datos que utilizan la partición como partición primaria y las colecciones no particionadas almacenadas en la partición antes de ejecutar el comando commitShardRemoval.

El comando devuelve un error si la partición no se ha vaciado por completo o si contiene una base de datos o una colección no fragmentada. Si la partición se drena y todas las bases de datos y colecciones no fragmentadas se migran de la partición, el comando devuelve ok.

Para comenzar a drenar una partición, consulta el comando startShardDraining.

Para comprobar el estado de una partición en proceso de drenaje, consulta el comando shardDrainingStatus.

Para detener el drenaje de una partición, consulte el comando stopShardDraining.

Nuevo en la versión 8.3.

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.

El comando tiene la siguiente sintaxis:

db.adminCommand( {
commitShardRemoval: <shard>
} )

Si tienes habilitado authorization, debes tener el rol de clusterManager o cualquier rol que incluya la acción de removeShard.

Cada base de datos en un clúster tiene una partición primaria. Si la partición que desea vaciar también es el primario de una de las bases de datos del clúster, entonces debe mover manualmente las bases de datos de su partición primaria a una nueva partición después de migrar todos los datos de la partición.

Si existe una base de datos que utilice la partición que deseas utilizar como primario, el comando commitShardRemoval devuelve un error.

Para más detalles, consulta el comando movePrimary y el remover particiones de un clúster para obtener información adicional.

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.

Si hay una colección no particionada almacenada en la partición que desea eliminar, el comando commitShardRemoval devuelve un error.

Para migrar una colección no particionada, consulta el comando moveCollection.

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, utiliza el comando shardDrainingStatus:

db.adminCommand( { shardDrainingStatus: "shard04" } )
{
"msg" : "draining completed successfully",
"state" : "drainingComplete",
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1771839836, 139),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1771839836, 139)
}

Si la salida muestra alguna base de datos en el campo dbsToMove, utiliza el comando movePrimary para trasladarlas a una partición diferente.

Si la salida muestra alguna colección no particionada en el campo collectionsToMove, utiliza el comando moveCollection para moverla a una partición diferente.

Cuando shardDrainingStatus muestra { state: "drainingComplete" }, el equilibrador ha terminado de mover fragmentos fuera de la partición. Ahora puedes remover la partición:

db.adminCommand( { commitShardRemoval: "shard04" } )
{
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1771840037, 12),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1771840037, 12)
}

Volver

commitReshardCollection

En esta página