Docs Menu
Docs Home
/ /

movePrimary (comando de base de datos)

movePrimary

En un clúster fragmentado, movePrimary reasigna el fragmento principal que contiene todas las colecciones no fragmentadas de la base de datos. primero modifica el fragmento principal en los metadatos delmovePrimary clúster y luego migra todas las colecciones no fragmentadas al fragmento especificado. Use el comando con el siguiente formato:

db.adminCommand( { movePrimary: <databaseName>, to: <newPrimaryShard> } )

Por ejemplo, el siguiente comando mueve la partición primaria de test a shard0001:

db.adminCommand( { movePrimary : "test", to : "shard0001" } )

Cuando el comando regresa, la ubicación del fragmento principal de la base de datos se ha cambiado al fragmento especificado. Para desmantelar completamente un fragmento, use el removeShard comando.

movePrimary es un comando administrativo que solo está disponible para mongos instancias.

Advertencia

Después de movePrimary iniciar,no realice ninguna operación de lectura ni escritura en ninguna colección no fragmentada de esa base de datos hasta que se complete el comando. Las operaciones de lectura o escritura realizadas en esas colecciones durante la migración pueden provocar un comportamiento inesperado, como un posible fallo de la migración o la pérdida de datos.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

  • 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.

mongos usa para escribir "majority" preocupación movePrimary por.

movePrimary puede requerir un tiempo significativo para completarse dependiendo del tamaño de la base de datos y factores como la salud de la red o los recursos de la máquina. Durante la migración, los intentos de guardar o realizar cualquier operación DDL en las colecciones no particionadas de la base de datos que se está trasladando fallan con el error: "movePrimary is in progress".

Considere programar una ventana de mantenimiento durante la cual las aplicaciones detengan todas las lecturas y escrituras en el clúster. Emitir movePrimary durante el tiempo de inactividad planificado mitiga el riesgo de encontrar un comportamiento indefinido debido a la intercalación de lecturas o escrituras en las colecciones no fragmentadas de la base de datos.

movePrimary Falla si el fragmento de destino contiene un espacio de nombres de colección conflictivo. Por ejemplo:

  1. Un administrador emite movePrimary para cambiar el fragmento principal de la base de datos hr.

  2. Un usuario o una aplicación emite una operación de guardar en una colección no particionada en hr mientras movePrimary está moviendo esa colección. La operación de guardar crea la colección en la partición primaria original.

  3. Más tarde, un administrador emite movePrimary para restaurar el fragmento primario original de la base de datos hr.

  4. movePrimary falla debido al espacio de nombres conflictivo que quedó de la operación de escritura entrelazada.

Como parte de la operación movePrimary, el fragmento de destino debe reconstruir los índices de las colecciones migradas tras convertirse en el fragmento principal. Esto puede requerir un tiempo considerable, dependiendo del número de índices por colección y de la cantidad de datos a indexar.

Consulte Construcciones de índices en colecciones pobladas para obtener más información sobre el proceso de construcción de índices.

Consulte Eliminar fragmentos de un clúster fragmentado existente para obtener un procedimiento completo.

Volver

moveCollection

En esta página