¿Cómo puedo crear una base de datos en MongoDB Atlas?

Respaldos Locales de MongoDB con mongodump

Valoración: 4.21 (2187 votos)

Mantener respaldos de datos es una práctica vital para cualquier organización. Los respaldos de datos actúan como una medida de seguridad crucial, permitiendo que la información sea recuperada o restaurada en caso de una emergencia, pérdida accidental o fallo del sistema. Típicamente, los respaldos de bases de datos se crean replicando la base de datos, utilizando herramientas integradas o servicios de respaldo externos especializados.

MongoDB, una base de datos NoSQL muy popular, ofrece múltiples opciones de respaldo integradas, que varían según el método de despliegue que utilices. Exploraremos brevemente estas opciones, pero nos centraremos en detalle en una herramienta particular: MongoDB mongodump, ideal para realizar respaldos locales y directos de tus datos.

¿Cómo hacer una copia de seguridad de MongoDB localmente?
El método más básico para crear una copia de seguridad es usar el comando mongodump sin opciones . Esto asumirá que la base de datos se encuentra en localhost (127.0.0.1) y usa el puerto 27017 sin requisitos de autenticación. El proceso de copia de seguridad creará una carpeta de volcado en el directorio actual.
Índice de Contenido

Opciones de Respaldo Integradas en MongoDB

MongoDB proporciona varias maneras de asegurar tus datos. Conocerlas te ayuda a elegir la estrategia más adecuada para tu entorno:

Respaldos en MongoDB Atlas

Si tu base de datos MongoDB está alojada en el servicio de base de datos en la nube MongoDB Atlas, el servicio ofrece respaldos incrementales continuos y automatizados. Además, Atlas puede crear instantáneas del proveedor de nube subyacente, utilizando la funcionalidad nativa de instantáneas para capturar el estado de los datos.

MongoDB Cloud Manager u Ops Manager

Cloud Manager es un servicio alojado que proporciona funcionalidades de respaldo, monitoreo y automatización para MongoDB. Facilita la creación y restauración de respaldos, ofreciendo además respaldos externos (offsite). Ops Manager, por su parte, ofrece la misma funcionalidad que Cloud Manager, pero está diseñado para ser desplegado como una solución local (on-premise).

MongoDB mongodump

Mongodump es una utilidad de respaldo simple pero potente que crea archivos BSON de alta fidelidad a partir de una base de datos subyacente. Estos archivos binarios son una representación exacta de los datos y pueden ser restaurados utilizando la utilidad complementaria mongorestore. Mongodump es una solución de respaldo ideal para instancias de MongoDB de tamaño pequeño a mediano debido a su facilidad de uso y portabilidad. Es la herramienta principal para respaldos locales y manuales.

Respaldos a Nivel del Sistema de Archivos

Este método implica simplemente copiar los archivos de datos subyacentes de una instalación de MongoDB. Si el sistema de archivos lo soporta, se pueden utilizar instantáneas (snapshots). Otra forma es emplear herramientas como rsync para copiar directamente los archivos de datos a un directorio de respaldo.

¿Qué es Exactamente MongoDB mongodump?

La utilidad mongodump es la herramienta de línea de comandos de MongoDB diseñada específicamente para crear volcados binarios (backups) del contenido de una base de datos. Puede exportar datos tanto de instancias mongod (instancias individuales o miembros de un replica set) como de instancias mongos (en clusters sharded), lo que te permite crear respaldos de:

  • Instancias autónomas
  • Replica sets
  • Clusters sharded (con ciertas limitaciones a partir de la versión 4.2)

Antes de MongoDB 4.4, mongodump se lanzaba junto con el servidor MongoDB y seguía su versionado. Sin embargo, las iteraciones más recientes de mongodump se lanzan como una utilidad separada dentro del paquete MongoDB Database Tools. Esta separación garantiza compatibilidad con versiones recientes de MongoDB, incluyendo 4.4, 4.2, 4.0 y 3.6. La utilidad es compatible con la mayoría de las plataformas x86_64 y algunas de ARM64, PPC64LE y s390x.

Comportamientos y Limitaciones de mongodump

Es fundamental comprender cómo funciona mongodump y cuáles son sus limitaciones para planificar tu estrategia de respaldo de manera efectiva:

  • Preferencia de Lectura: Por defecto, mongodump dirige sus operaciones de lectura al miembro primario de un replica set. Su preferencia de lectura predeterminada es primary.
  • Exclusión de Base de Datos y Datos de Índice: La operación de respaldo excluye la base de datos 'local'. Además, solo captura los documentos, excluyendo los datos de índice. Los índices deben ser reconstruidos después de un proceso de restauración utilizando mongorestore.
  • Vistas de Solo Lectura: Respecto a las vistas de solo lectura, mongodump solo captura los metadatos de las vistas. Si necesitas capturar los documentos dentro de una vista, debes usar la opción --viewsAsCollections.
  • Formato de Metadatos: Para asegurar la máxima compatibilidad, se recomienda usar Extended JSON v2.0 (Canonical) para los archivos de metadatos generados por mongodump. Es crucial utilizar versiones correspondientes de mongodump y mongorestore para operaciones de respaldo y restauración.
  • Sobreescritura de Archivos: El comando mongodump sobrescribirá los archivos existentes dentro del directorio de respaldo especificado. La ubicación predeterminada para los respaldos es la carpeta dump/ en el directorio actual donde se ejecuta el comando.
  • Motor de Almacenamiento WiredTiger: Cuando se utiliza el motor de almacenamiento WiredTiger, la salida de mongodump serán datos sin comprimir.
  • Dependencia de Memoria del Sistema: Las operaciones de respaldo con mongodump dependen de la memoria del sistema disponible. Si el conjunto de datos es significativamente más grande que la memoria del sistema, la utilidad puede desplazar el conjunto de trabajo fuera de la memoria, impactando potencialmente el rendimiento de la base de datos durante el respaldo.
  • Control de Acceso y Privilegios: Si el control de acceso está configurado en la base de datos MongoDB, el usuario que ejecuta mongodump debe tener suficientes privilegios en cada base de datos que se va a respaldar. MongoDB proporciona un rol integrado llamado backup con los privilegios necesarios para respaldar cualquier base de datos.
  • Clusters Sharded con Transacciones en Progreso (Post-4.2): A partir de MongoDB 4.2, mongodump no puede ser utilizado como parte de la estrategia de respaldo cuando se respaldan clusters sharded que tienen transacciones distribuidas en progreso. En estos casos, se recomienda usar soluciones como MongoDB Cloud Manager u Ops Manager, que mantienen la atomicidad en las transacciones a través de los shards.
  • Ejecución: El comando mongodump debe ser ejecutado desde la línea de comandos del sistema, ya que es una utilidad separada del shell de MongoDB.
  • No hay Respaldos Incrementales: Una limitación importante es que mongodump realiza siempre un respaldo completo. No existe una opción para realizar respaldos incrementales.

Herramientas de Base de Datos de MongoDB

Las Herramientas de Base de Datos de MongoDB (MongoDB Database Tools) son una colección de utilidades de línea de comandos esenciales para el mantenimiento y la administración de instancias de MongoDB. Estas herramientas incluyen mongodump, mongorestore, mongoimport, mongoexport, entre otras. Son compatibles con varios entornos operativos:

  • Windows
  • Linux
  • macOS

A continuación, veremos cómo verificar su instalación e instalarlas en un servidor Linux, que es un escenario común para despliegues de MongoDB.

Verificando la Instalación de las Herramientas

Para comprobar si las herramientas de base de datos ya están instaladas en tu sistema Linux (basado en Debian/Ubuntu), puedes usar el siguiente comando:

sudo dpkg -l mongodb-database-tools

Si las herramientas están instaladas, verás una salida similar a esta (la versión puede variar):

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-========================-================-============-=================================================
ii mongodb-database-tools 100.2.1 amd64 MongoDB database tools

Si no están disponibles o instaladas, el resultado podría ser diferente, indicando que el paquete no se encuentra.

Instalando las Herramientas de Base de Datos

Si tu sistema no tiene las Herramientas de Base de Datos de MongoDB, puedes instalarlas. El centro de descargas de MongoDB proporciona las versiones más recientes. Debes descargar la versión adecuada para tu plataforma y tipo de paquete (por ejemplo, .deb para Debian/Ubuntu, .rpm para RHEL/CentOS). En un entorno CLI, puedes usar wget o curl para descargar el paquete directamente.

El siguiente ejemplo muestra cómo descargar e instalar la versión 100.2.1 de las Herramientas de Base de Datos para Ubuntu 20.04 (x86_64) usando curl y apt:

curl -o mongodb-database-tools-ubuntu2004-x86_64-100.2.1.deb https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2004-x86_64-100.2.1.deb
sudo apt install ./mongodb-database-tools-ubuntu2004-x86_64-100.2.1.deb

La salida de la instalación exitosa se verá similar a esta:

Reading package lists... Done
Building dependency tree
Reading new state information... Done
The following NEW packages will be installed:
mongodb-database-tools
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/25.1 MB of archives.
After this operation, 104 MB of additional disk space will be used.
Get:1 file:./mongodb-database-tools-ubuntu2004-x86_64-100.2.1.deb mongodb-database-tools amd64 100.2.1 [25.1 MB]
Selecting previously unselected package mongodb-database-tools.
(Reading database ... 201763 files and directories currently installed.)
Preparing to unpack .../mongodb-database-tools-ubuntu2004-x86_64-100.2.1.deb ...
Unpacking mongodb-database-tools (100.2.1) ...
Setting up mongodb-database-tools (100.2.1) ...
Processing triggers for man-db (2.9.1-1) ...

Una vez instaladas, tendrás acceso al comando mongodump en tu terminal.

Uso Práctico de MongoDB mongodump

Ahora que tenemos las herramientas listas, veamos cómo utilizar la utilidad mongodump para realizar respaldos en diferentes escenarios.

Sintaxis Básica de mongodump

La sintaxis general del comando es:

mongodump <opciones> <cadena-de-conexion>

El método más básico para crear un respaldo es ejecutar mongodump sin ninguna opción. Esto asume que la base de datos se encuentra en localhost (127.0.0.1) y utiliza el puerto predeterminado 27017, sin requisitos de autenticación. El proceso de respaldo creará una carpeta llamada dump en el directorio actual donde ejecutas el comando.

mongodump

La salida indicará el progreso y las colecciones respaldadas:

2023-10-27T10:00:00.000+0000 writing admin.system.keys to <stdout>
2023-10-27T10:00:00.000+0000 done dumping admin.system.keys
2023-10-27T10:00:00.000+0000 writing config.system.sessions to <stdout>
... (más líneas de respaldo)
2023-10-27T10:00:00.000+0000 done dumping database <DATABASE_NAME>

Puedes navegar a la carpeta dump para verificar los archivos creados, que estarán organizados por base de datos y colección.

Respaldando una Instancia Remota de MongoDB

Para respaldar una instancia de MongoDB que no se ejecuta en tu máquina local, necesitas especificar la dirección del host y, opcionalmente, el puerto. Puedes hacerlo usando la opción --uri con una cadena de conexión de MongoDB, o utilizando las opciones --host y --port por separado.

Con la opción --uri:

mongodump --uri="mongodb://<URL/IP del host>:<Puerto>" [opciones adicionales]

Con la opción --host:

mongodump --host="<URL/IP del host>:<Puerto>" [opciones adicionales]

Con las opciones --host y --port por separado:

mongodump --host="<URL/IP del host>" --port=<Puerto> [opciones adicionales]

El siguiente ejemplo demuestra cómo crear un respaldo de una instancia remota ubicada en la IP 10.10.10.59 en el puerto predeterminado:

mongodump --host="10.10.10.59" --port=27017

La salida será similar a la del respaldo local, pero conectándose a la instancia remota.

¿Cómo insertar datos en MongoDB Compass?
Haga clic en el menú desplegable Agregar datos y seleccione Insertar documento . Seleccione la vista adecuada según cómo desee insertar los documentos. Haga clic en el Corchetes { } para la vista JSON. Esta es la vista predeterminada.

Respaldando una Instancia Segura de MongoDB

Si tu instancia de MongoDB tiene el control de acceso habilitado (es decir, requiere autenticación), necesitas proporcionar credenciales para conectarte. Deberás especificar el nombre de usuario, la contraseña y la base de datos de autenticación (generalmente 'admin').

Sintaxis de Autenticación:

mongodump --authenticationDatabase=<Base de Datos> -u=<Nombre de Usuario> -p=<Contraseña> [opciones adicionales]

Veamos cómo conectarse a la instancia remota del ejemplo anterior utilizando un nombre de usuario ('barryadmin') y una contraseña ('testpassword'), autenticando contra la base de datos 'admin':

mongodump --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword"

La ejecución exitosa significa que las credenciales fueron aceptadas y el respaldo comenzó.

Seleccionando Bases de Datos y Colecciones Específicas

Por defecto, mongodump respalda todas las bases de datos accesibles (excepto 'local'). Puedes limitar el alcance del respaldo a una base de datos específica o incluso a una colección dentro de una base de datos utilizando las opciones --db y --collection.

Seleccionando una base de datos:

mongodump --db=<Base de Datos Objetivo> [opciones adicionales]

Seleccionando una colección (requiere especificar la base de datos):

mongodump --db=<Base de Datos Objetivo> --collection=<Nombre de la Colección> [opciones adicionales]

Para excluir una colección específica del proceso de respaldo, puedes usar la opción --excludeCollection. Esto también requiere especificar la base de datos.

mongodump --db=<Base de Datos Objetivo> --excludeCollection=<Nombre de la Colección> [opciones adicionales]

En el siguiente ejemplo, definimos la colección 'vehicleinformation' dentro de la base de datos 'vehicles' como el único objetivo del respaldo en nuestra instancia remota y segura:

mongodump --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" --db=vehicles --collection=vehicleinformation

La salida mostrará que solo se está respaldando esa colección específica.

Cambiando el Directorio de Salida del Respaldo

Por defecto, mongodump crea la carpeta dump/ en el directorio actual. Puedes especificar una ubicación diferente para la carpeta de respaldo utilizando la opción --out.

mongodump --out=<Ubicación del Directorio> [opciones adicionales]

Cambiemos el directorio de respaldo a una carpeta llamada 'dbbackup' en nuestra instancia remota y segura:

mongodump --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" --out=dbbackup

Los archivos del respaldo se crearán ahora dentro de la carpeta 'dbbackup' en lugar de 'dump'.

Creando un Archivo de Archivo Único (Archive)

En lugar de crear una carpeta con múltiples archivos BSON, la utilidad mongodump permite crear un único archivo de archivo. Puedes usar la opción --archive para especificar el nombre de este archivo. Si no se especifica un nombre de archivo, la salida se escribirá a la salida estándar (stdout), lo que permite encadenar comandos (por ejemplo, para comprimir y transferir directamente).

La opción --archive no puede usarse junto con la opción --out.

mongodump --archive=<archivo> [opciones adicionales]

El siguiente ejemplo demuestra cómo definir un archivo de archivo llamado 'db.archive' para el respaldo:

mongodump --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" --archive=db.archive

Se creará un único archivo llamado 'db.archive' que contiene el volcado de la base de datos.

Comprimiendo el Respaldo

Puedes comprimir los archivos de respaldo generados por mongodump utilizando la opción --gzip. Esta opción comprimirá individualmente los archivos BSON (y JSON para metadatos) dentro del directorio de salida o el archivo de archivo.

mongodump --gzip [opciones adicionales]

Comprimamos un respaldo completo de la base de datos en nuestra instancia remota y segura:

mongodump --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" --gzip

Los archivos dentro del directorio de salida (por defecto dump/) tendrán la extensión .gz, indicando que están comprimidos.

Comparativa Rápida de Métodos de Respaldo

MétodoTipo de RespaldoComplejidadIdeal ParaCaracterísticas Clave
mongodump / mongorestoreLógico (BSON)Baja a MediaInstancias pequeñas/medianas, replica sets, respaldos manuales/scripts simples.Fácil de usar, portable, excluye índices y DB 'local', no incremental, limitaciones en clusters sharded con transacciones (>= 4.2).
MongoDB Atlas BackupsContinuo incremental, Instantáneas del proveedor.Baja (gestionado)Deployments en MongoDB Atlas.Automatizado, gestionado, granular, point-in-time recovery.
Cloud/Ops Manager BackupsContinuo incremental.Media a AltaDeployments gestionados (en la nube o on-premise).Automatizado, gestionado, consistente en clusters sharded, offsite backups.
Sistema de Archivos (rsync, instantáneas)Físico (archivos de datos)MediaCasos donde se requiere copia a bajo nivel, sistemas de archivos con soporte para instantáneas.Rápido para grandes volúmenes, requiere detener/bloquear la DB o usar instantáneas consistentes.

Preguntas Frecuentes sobre mongodump

¿mongodump realiza respaldos incrementales?
No, mongodump siempre realiza un respaldo completo de la base de datos o colección especificada. No tiene la capacidad de realizar respaldos incrementales.
¿Puedo usar mongodump para respaldar un cluster sharded?
Sí, puedes usar mongodump en un cluster sharded conectándote a una instancia mongos. Sin embargo, a partir de MongoDB 4.2, no se recomienda para clusters sharded que manejan transacciones distribuidas en progreso, ya que no puede garantizar la atomicidad en ese escenario.
¿Qué sucede con los índices al usar mongodump?
mongodump no respalda los datos de índice. Solo respalda los documentos. Cuando restauras con mongorestore, los índices deben ser reconstruidos después de importar los datos.
¿Cómo restauro un respaldo creado con mongodump?
Para restaurar un respaldo creado con mongodump, utilizas la utilidad complementaria mongorestore. Por ejemplo: mongorestore --db <nombre_db> /ruta/a/tu/carpeta/dump/<nombre_db> o mongorestore --archive=db.archive si creaste un archivo de archivo.
¿Es seguro usar mongodump -p para la contraseña?
Usar la opción -p directamente en la línea de comandos expone tu contraseña en el historial del shell y en los procesos en ejecución. Es más seguro omitir la opción -p para que mongodump te solicite la contraseña de forma interactiva, o utilizar un archivo de credenciales.

En este artículo, hemos cubierto los pasos esenciales para utilizar la utilidad mongodump de MongoDB para crear y gestionar respaldos de bases de datos localmente. Desde la instalación de las Herramientas de Base de Datos hasta la ejecución de comandos básicos, remotos, seguros, selectivos, y la compresión de los respaldos, ahora tienes una base sólida para proteger tus datos. Comprender las capacidades y limitaciones de mongodump te permitirá integrarla eficazmente en tu estrategia general de respaldo. Recuerda que, para entornos de producción críticos o clusters sharded complejos, otras soluciones como Cloud Manager/Ops Manager o Atlas Backups pueden ser más adecuadas.

Si quieres conocer otros artículos parecidos a Respaldos Locales de MongoDB con mongodump puedes visitar la categoría Bases de datos.

Ivan

Soy un entusiasta de la tecnología con especialización en bases de datos, particularmente en MySQL. A través de mis tutoriales detallados, busco desmitificar los conceptos complejos y proporcionar soluciones prácticas a los desafíos cotidianos relacionados con la gestión de datos

Aprende mas sobre MySQL

Subir