Definición
sh.unshardCollection( namespace, shardID )Desharda una colección particionada existente y traslada los datos de la colección a una única partición. Cuando se desagrupa una colección, la colección no puede dividirse entre múltiples shards y la clave de partición se eliminan.
Nuevo en la versión 8.0.
Importante
Método mongosh
Esta página documenta a Método
mongosh. Esta no es la documentación de comandos de base de datos ni de controladores específicos del lenguaje, como Node.js.Para el comando de base de datos, consulta el comando
unshardCollection.Para los drivers de API de MongoDB, consulte la documentación del driver de MongoDB específica del lenguaje.
El método
sh.unshardCollectionrequiere especificar la partición que recibirá los datos de la colección. Con el comandounshardCollection, si no especificas la partición de destino, el clúster selecciona automáticamente la partición con menos datos.Si la colección utiliza particionado por zonas, primero debes remover las asociaciones de rango y particionar desde la zona antes de desparticionar la colección. Para obtener más información, consulta Zonas sin particiones.
Nota
Desfragmentar una colección es una operación intensiva en escritura que puede resultar en una mayor tasa de crecimiento del oplog. Para ayudar a mitigar esto, considera los siguientes cambios de configuración:
Para prevenir el crecimiento ilimitado del oplog, establece un tamaño fijo para el oplog.
Para reducir la posibilidad de que los secundarios queden obsoletos, aumente el tamaño del oplog.
Para obtener más detalles, consulta el Oplog del set de réplicas.
Sintaxis
sh.unshardCollection tiene la siguiente sintaxis:
sh.unshardCollection( namespace, shardID )
Parámetros
Parameter | Tipo | Descripción |
|---|---|---|
| string | Especifique o base de datos e a colección para desvincular. |
| string | Especifica el ID de la partición receptora. A medida que MongoDB quita la partición de la colección, mueve los datos de la colección de los shards actuales a este shard específico. |
Compatibilidad
Este método 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.
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Considerations
sh.unshardCollection()Sólo se puede ejecutar en clústeres fragmentados.sh.unshardCollection()solo puede operar en colecciones fragmentadas.sh.unshardCollection()solo puede operar en una única colección a la vez.sh.unshardCollection()tiene una duración mínima de 5 minutos.Debe reconstruir los índices de búsqueda de MongoDB Search después de ejecutar
sh.unshardCollection().No puede realizar cambios de topología, como añadir o remover particiones o pasar de servidores de configuración dedicados a embebidos, hasta que
sh.unshardCollection()se complete.No puedes ejecutar las siguientes operaciones en la colección que se está desfragmentando mientras
sh.unshardCollection()está en curso:No se pueden ejecutar las siguientes operaciones en el clúster mientras
unshardCollectionesté en progreso:Las creaciones de índices que ocurran mientras
sh.unshardCollection()esté en curso podrían fallar silenciosamente.No cree índices mientras
sh.unshardCollection()esté en progreso.No llame a
sh.unshardCollection()si hay creaciones de índices en curso.
Para evitar errores, MongoDB descarta automáticamente las zonas de tu colección cuando ejecutas
unshardCollection.
Requisitos
Antes de desfragmentar tu colección, asegúrate de cumplir los siguientes requisitos:
Su aplicación puede tolerar un periodo de dos segundos en el que la colección afectada bloquea las escrituras. Durante este periodo, la aplicación experimenta un aumento de latencia.
Su base de datos cumple con estos requisitos de recursos:
Asegúrate de que la partición a la que mueves la colección tenga suficiente espacio de almacenamiento para la colección y sus índices. La partición de destino requiere al menos
( Collection storage size + Index Size ) * 2bytes disponibles.Asegúrate de que tu capacidad de E/S esté por debajo de 50%.
Asegúrate de que la carga de tu CPU esté por debajo del 80%.
Comportamiento
Desfragmentar zonas
Para desfragmentar una colección que utiliza particionado por zona, primero debes detener el equilibrador y luego remover el rango y la partición de la zona.
Ejemplos
Eliminar partición de una colección
Este ejemplo desfragmenta una colección denominada inventory en la base de datos app en el fragmento shard02.
sh.unshardCollection( "app.inventory", "shard02" )
Para obtener una lista de los ID de fragmentos disponibles,sh.status() ejecute. Para más detalles, consulte la salida de sh.status().