Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

commitShardRemoval (comando de base de datos)

commitShardRemoval

Elimina una partición de un clúster.

Para ejecutar este comando, primero debe vaciar el fragmento con el startShardDraining Comando. Este comando le indica al balanceador que mueva fragmentos del shard a otros shards del clúster. También debe mover manualmente las bases de datos que utilizan el shard como shard principal y las colecciones no fragmentadas almacenadas en el shard antes de ejecutar el commitShardRemoval comando.

El comando devuelve un error si el fragmento no se ha vaciado por completo o si contiene una base de datos o una colección no fragmentada. Si el fragmento se ha vaciado y todas las bases de datos y colecciones no fragmentadas se han migrado fuera del fragmento, el comando devuelve ok.

Para comenzar a drenar un fragmento, consulte el startShardDraining comando.

Para comprobar el estado de un fragmento en proceso de drenaje, consulte el shardDrainingStatus comando.

Para detener el drenaje de un fragmento, consulte el stopShardDraining comando.

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.

En un clúster fragmentado, cada base de datos tiene una partición principal. Si la partición que desea vaciar es también la principal de una de las bases de datos del clúster, deberá mover manualmente las bases de datos desde su partición principal a una nueva partición después de migrar todos los datos de la partición actual.

Si hay una base de datos que utiliza el fragmento que desea usar como primario, el comando commitShardRemoval devuelve un error.

Para obtener más detalles, consulte el movePrimary comando y la sección Eliminar fragmentos de un clúster fragmentado para obtener más información.

Las colecciones no fragmentadas se almacenan en fragmentos individuales. Si una de estas colecciones se encuentra en el fragmento que desea eliminar, primero debe migrarla a otro fragmento.

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

Para migrar una colección no fragmentada, consulte el moveCollection comando.

Para comenzar a drenar un fragmento, utilice el método db.adminCommand() startShardDraining para ejecutar el comando:

db.adminCommand( { startShardDraining: "shard04" } )

Para comprobar el estado de la operación de drenaje, utilice el shardDrainingStatus comando:

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 dbsToMove campo, utilice el movePrimary comando para moverlas a un fragmento diferente.

Si la salida muestra alguna colección sin fragmentar en el collectionsToMove campo, utilice el moveCollection comando para moverlas a un fragmento diferente.

Cuando shardDrainingStatus { state: "drainingComplete" }muestra, el equilibrador ha terminado de mover fragmentos fuera del shard. Ahora puedes eliminar el shard:

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