Nota
Esta página se aplica a los clústeres de Atlas Core. Para usar mongodump y mongorestore para cargar datos en un clúster de Atlas Infinite, consulte Restaurar datos desde una implementación de MongoDB.
Puedes usar mongodump y mongorestore para inicializar un clúster de MongoDB Atlas con datos de una instancia independiente o un conjunto de réplicas de MongoDB existente. Para obtener ayuda sobre cómo inicializar datos desde un clúster fragmentado de MongoDB existente, ponte en contacto con el soporte de Atlas.
Si bien puede escalar un clúster gratuito (anteriormente conocido como M0) a un clúster de pago M10+ utilizando la interfaz de usuario de Atlas, también puede utilizar los procedimientos mongodump y mongorestore de esta sección para copiar datos de un clúster gratuito a un clúster M10+.
Acerca de esta tarea
Versión recomendada de mongodump y mongorestore
Usa la última versión estable de mongodump y de mongorestore para este procedimiento.
Tiempo de inactividad requerido
Para garantizar una migración actualizada, programe una ventana de mantenimiento en la que pueda detener todas las escrituras en su clúster de origen. Las operaciones de escritura realizadas en el clúster de origen después de que finalice la parte mongodump del procedimiento no se migrarán al clúster de destino.
Si no puede detener las escrituras durante toda la duración de mongodump, ejecute mongodump --oplog con mongorestore --oplogReplay para capturar y reproducir las escrituras que se produzcan durante el volcado. Esto restaura una instantánea de la implementación de origen en el momento en que mongodump finalizó. La opción --oplog solo se puede usar con un conjunto de réplicas.
Nota
mongorestore falla cuando se combina --oplogReplay con --nsExclude. Si usa --oplogReplay, omita --nsExclude del comando mongorestore y elimine los directorios admin y config del directorio dump que creó conmongodump --oplog.
Una vez que mongorestore complete la restauración de datos, deberá migrar sus aplicaciones al clúster Atlas de destino antes de reanudar las operaciones de escritura. Para conectarse a un clúster Atlas, consulte Conectarse a un clúster Atlas.
La cantidad total de tiempo de inactividad requerido depende de factores como el tamaño de los datos que se están migrando y la conexión de red entre tu clúster de origen y Atlas. Si tienes preguntas o inquietudes sobre un periodo de inactividad prolongado, contacta al soporte de Atlas:
Seguridad del clúster
Atlas gestiona la creación de usuarios de bases de datos. Si el clúster de origen aplica la autenticación:
Permitir acceso de solo lectura al primario.
Si desea utilizar
mongorestorecon la opción--oplogReplay, debe eliminar los directoriosadminyconfigdel directoriodumpque creamongodump. Los directoriosadminyconfigcontienen información de usuario de la base de datos que no puede agregar a un clúster de Atlas conmongorestore.
No se puede migrar ninguna información de usuario o rol existente a Atlas. Para el clúster de Atlas de destino, se deben crear los usuarios de base de datos apropiados para admitir los patrones de uso de la aplicación. Se deben actualizar las aplicaciones como parte del procedimiento de cambio para usar los nuevos usuarios de base de datos. Para aprender más, se puede consultar Configurar usuarios de base de datos.
Rendimiento
Este procedimiento requiere ejecutar mongodump y mongorestore en un host del clúster de origen. Estos programas utilizan recursos del sistema, como la CPU y la memoria, y pueden afectar el rendimiento del host.
Ejecute este procedimiento durante períodos de baja actividad del sistema o durante una ventana de mantenimiento programada. Si el origen es un conjunto de réplicas, puede ejecutar este procedimiento desde el host de un miembro secundario. Tras detener las escrituras en el clúster, espere a que el miembro secundario se sincronice con el principal antes de iniciar este procedimiento.
Comportamiento del pipe
Este procedimiento utiliza tuberías de Linux para transmitir la salida de mongodump a mongorestore. Si el proceso mongorestore no puede seguir el ritmo del proceso mongodump, es posible que aparezcan errores de tubería rota.
Para obtener orientación sobre cómo abordar los errores persistentes de pipe rota, contacta al soporte de Atlas:
Pasos
El siguiente tutorial utiliza mongodump y mongorestore para cargar datos desde un clúster de MongoDB existente a un clúster de Atlas:
Opcional. Cree un usuario de base de datos en el conjunto de réplicas de origen.
Si la implementación de origen exige autenticación, deberá otorgar a un usuario de base de datos privilegios para leer cualquier base de datos como parte de este procedimiento. Para obtener más información sobre los privilegios de usuario de la base de datos, consulte Control de acceso basado en roles de MongoDB.
Si no existe dicho usuario, cree un usuario en su conjunto de réplicas de MongoDB de origen con el rol de copia de seguridad en la base de datos admin.
Ejemplo
Ejecute el siguiente comando en mongosh para crear mySourceUser en la base de datos admin y asignarle el rol backup. Para conjuntos de réplicas, debe ejecutar este comando en el nodo principal.
use admin db.createUser( { user: "<mySourceUser>", pwd: "<mySourcePassword>", roles: [ "backup" ] } )
Monte el comando mongodump.
Dependiendo del tipo de cadena de conexión que uses, copia una de las siguientes plantillas en tu editor de texto preferido:
Nota
Para conectarte a los clústeres de Atlas, se recomienda usar una cadena de conexión de lista de nodos iniciales DNS usando la opción --uri.
mongodump --uri "mongodb://username:password@mongodb0.example.com:<Port>,mongodb1.example.com:<Port1>,mongodb2.example.com:<Port2>/?replicaSet=<ReplicaSetName>&authSource=admin" \ --archive
Reemplace los ejemplos de hosts con la información de los miembros de su conjunto de réplicas. Reemplaza <ReplicaSetName> con el nombre del set de réplicas de origen.
Para implementaciones autónomas, excluye replicaSet=<ReplicaSetName> y especifica únicamente el nombre de host de la implementación autónoma. Por ejemplo, --uri "mongodb://standalone-mongod.example.net:27017"
mongodump --uri "mongodb+srv://username:password@cluster0.example.mongodb.net" \ --archive
Nota
Si utiliza mongodump o mongorestore en Ubuntu 18.04, es posible que experimente un mensaje de error cannot unmarshal DNS al usar cadenas de conexión SRV (en el formato mongodb+srv://) con la opción --uri. En ese caso, utilice una de las siguientes opciones:
la opción
--uricon una cadena de conexión que no sea SRV (en el formatomongodb://)la opción
--hostpara especificar el host al cual conectarse directamente
Nota
Si tu contraseña contiene caracteres especiales, deben estar codificados en porcentaje.
No ejecute este comando todavía. Continúe al siguiente paso una vez que haya modificado la plantilla.
Configurar usuario de base de datos en el clúster de Atlas de destino.
Para ejecutar mongorestore en un clúster de Atlas, debe especificar un usuario de base de datos en el clúster de Atlas que tenga el rol Atlas admin.
Si no existe tal usuario, cree uno:
En Atlas, se debe ir a la página Database Access del proyecto.
Si aún no aparece, se debe seleccionar la organización que contiene el proyecto en el menú Organizations de la barra de navegación.
Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Database & Network Access en la sección Security.
Se muestra la página de acceso a la base de datos y a la red.
Haga clic en Add New Database User.
Agrega un usuario Atlas admin.
Para obtener más información sobre la gestión de usuarios, consulta Configura usuarios de base de datos.
En Atlas, ve a la página Clusters de tu proyecto.
Si aún no se muestra, seleccione la organización que contiene su proyecto deseado en el menú Organizations de la barra de navegación.
Si aún no aparece, selecciona el proyecto deseado en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Clusters en la sección Database.
La página de clústeres se muestra.
Recupera y modifica la plantilla de conexión mongorestore.
La sección Binary Import and Export Tools de la pestaña Command Line Tools muestra una plantilla copiable con las opciones mínimas necesarias para conectar mongorestore a su clúster Atlas.
La plantilla incluye valores de marcador de posición para ciertas opciones. Copia y pega la plantilla en tu editor de texto preferido y realiza las siguientes modificaciones:
password: reemplaza esto con la contraseña para el usuario especificado enusername. La plantilla incluye un usuario de base de datos para el proyecto como elusername. Si deseas autenticarte como un usuario diferente, reemplaza el valor deusernamey especifica la contraseña para ese usuario enpassword.Agregue
--nsExcludey establezca su valor en"admin.system.*".Add
--archive.
Según el tipo de cadena de conexión que utilices, tu plantilla debería parecerse a uno de los siguientes comandos:
mongorestore --uri "mongodb://username:password@00.foo.mongodb.net:27017,01.foo.mongodb.net:27017,02.foo.mongodb.net:27017/?replicaSet=myRepl&authSource=admin" \ --archive \ --ssl \ --nsExclude "admin.system.*"
mongorestore --uri "mongodb+srv://username:password@cluster1.example.mongodb.net" \ --archive \ --nsExclude "admin.system.*"
Ejecuta mongodump y mongorestore.
Importante
Asegúrese de que el host donde está ejecutando mongodump y mongorestore esté en la lista de acceso IP del proyecto.
Para revisar la lista de acceso IP de tu proyecto, haz clic en Network Access en la sección Security de la barra lateral. La pestaña IP Access List se muestra. Para obtener más información, consulte Lista de acceso IP.
En su editor de texto preferido, utilice el operador de tubería | para separar los comandos mongodump y mongorestore. Según el tipo de cadena de conexión que utilice, el comando final debería ser similar a uno de los siguientes:
mongodump --uri "mongodb://username:password@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?replicaSet=sourceRS&authSource=admin" \ --archive \ | \ mongorestore --uri "mongodb://username:password@00.foo.mongodb.net:27017,01.foo.mongodb.net:27017,02.foo.mongodb.net:27017/?replicaSet=myAtlasRS&authSource=admin" \ --archive \ --ssl \ --nsExclude "admin.system.*"
mongodump --uri "mongodb+srv://username:password@cluster0.example.mongodb.net" \ --archive \ | \ mongorestore --uri "mongodb+srv://username:password@cluster1.example.mongodb.net" \ --archive \ --nsExclude "admin.system.*"
Ejecuta el comando completo desde una terminal o shell conectada a un host en tu clúster de origen.
Una vez finalizado el procedimiento correctamente, conéctese a su clúster Atlas mediante mongosh y verifique el resultado. Para obtener más información, consulte Conectarse a un clúster mediante mongosh.
Se debe actualizar las aplicaciones para que apunten al clúster Atlas antes de reanudar las operaciones de guardado. Para aprender a conectar aplicaciones a Atlas, consulta Conectar a un clúster mediante Librerías de clientes.