Docs Menu
Docs Home
/ /

sh.unshardCollection (método mongosh)

sh.unshardCollection( namespace, shardID )

Desfragmenta una colección fragmentada existente y mueve los datos de la colección a un solo fragmento. Al desfragmentar una colección, esta no se puede particionar en varios. Seeliminan los fragmentos y la clave del fragmento.

Nuevo en la versión 8.0.

Importante

Método mongosh

Esta página documenta una mongosh Método. Esta no es la documentación para comandos de base de datos ni para 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 sh.unshardCollection método requiere que especifique el fragmento que recibirá los datos de la recopilación. Con el comando, si no especifica el fragmento de destino, el clúster selecciona automáticamente el fragmento con menos unshardCollection datos.

Si la colección utiliza fragmentación de zonas, primero debe eliminar las asociaciones de rango y la fragmentación de la zona antes de desfragmentar la colección. Para obtener más información, consulte Desfragmentar zonas.

Nota

Desfragmentar una colección es una operación de escritura intensiva que puede resultar en un aumento en la tasa de crecimiento del registro de operaciones. Para mitigar esto, considere los siguientes cambios de configuración:

  • Para evitar un crecimiento ilimitado del oplog, establezca un tamaño de oplog fijo.

  • Para reducir la posibilidad de que los secundarios queden obsoletos, aumente el tamaño del oplog.

Para obtener más detalles, consulte el registro de operaciones del conjunto de réplicas.

sh.unshardCollection tiene la siguiente sintaxis:

sh.unshardCollection( namespace, shardID )
Parameter
Tipo
Descripción

namespace

string

Especifica la base de datos y la colección que se van a desfragmentar.

shardID

string

Especifica el ID del fragmento del destinatario. A medida que MongoDB desfragmenta la colección, mueve los datos de la colección desde sus fragmentos actuales a este fragmento específico.

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

  • sh.unshardCollection() Sólo se puede ejecutar en clústeres fragmentados.

  • sh.unshardCollection() Sólo puede operar en colecciones fragmentadas.

  • sh.unshardCollection() Sólo puede operar en una única colección a la vez.

  • sh.unshardCollection() tiene una duración mínima de 5 minutos.

  • Debes reconstruir los índices de búsqueda de MongoDB después de que se ejecute 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 se pueden ejecutar las siguientes operaciones en la colección que se está desfragmentando mientras sh.unshardCollection() está en progreso:

  • No se pueden ejecutar las siguientes operaciones en el clúster mientras unshardCollection esté en progreso:

  • Las compilaciones de índices que ocurren mientras sh.unshardCollection() está en progreso pueden fallar silenciosamente.

    • No cree índices mientras sh.unshardCollection() esté en progreso.

    • No llame a sh.unshardCollection() si hay compilaciones de índices en curso.

  • Para evitar errores, MongoDB elimina automáticamente las zonas de su colección cuando ejecuta unshardCollection.

Antes de desfragmentar su colección, asegúrese de cumplir con 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 estos requisitos de recursos:

    • Asegúrese de que el fragmento al que va a mover la colección tenga suficiente espacio de almacenamiento para la colección y sus índices. El fragmento de destino requiere al menos ( Collection storage size + Index Size ) * 2 bytes disponibles.

    • Asegúrese de que su capacidad de E/S esté por debajo del 50%.

    • Asegúrese de que la carga de su CPU esté por debajo del 80%.

Para desfragmentar una colección que utiliza fragmentación de zona, primero debe detener el balanceador y luego eliminar el rango y el fragmento de la zona.

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().

Volver

sh.stopBalancer

En esta página