sql >> Base de Datos >  >> NoSQL >> MongoDB

Una revisión de las opciones de respaldo de MongoDB

La copia de seguridad de la base de datos no es más que una forma de proteger o restaurar datos. Es el proceso de almacenar el estado operativo, la arquitectura y los datos de su base de datos. Puede ser muy útil en situaciones de corte técnico o desastre. Por lo tanto, es esencial mantener la copia de seguridad de su base de datos y que su base de datos tenga un proceso bueno y fácil para la copia de seguridad.

MongoDB proporciona varias herramientas/técnicas para realizar copias de seguridad de sus bases de datos fácilmente.

En este artículo, analizaremos algunos de los principales flujos de trabajo de copia de seguridad y restauración de MongoDB.

En general, hay tres opciones más comunes para hacer una copia de seguridad de su servidor/clúster MongoDB.

  • Mongodump/Mongorestore
  • Administrador de la nube de MongoDB
  • Instantáneas de la base de datos

Además de estas opciones generales, existen otras formas de hacer una copia de seguridad de su MongoDB. Discutiremos todas estas opciones también en este artículo. Comencemos.

MongoDump/MongoRestore

Si tiene una base de datos pequeña (<100 GB) y desea tener el control total de sus copias de seguridad, entonces Mongodump y Mongorestore son sus mejores opciones. Estos son comandos de mongo Shell que se pueden usar para hacer una copia de seguridad manual de su base de datos o colecciones. Mongodump vuelca todos los datos en formato binario JSON (BSON) en la ubicación especificada. Mongorestore puede usar estos archivos BSON para restaurar su base de datos.

Copia de seguridad de una base de datos completa

$ sudo mongodump --db mydb --out /var/backups/mongo

Salida:

2018-08-20T10:11:57.685-0500    writing mydb.users to /var/backups/mongo/mydb/users.bson
2018-08-20T10:11:57.907-0500    writing mydb.users metadata to /var/backups/mongo/mydb/users.metadata.json
2018-08-20T10:11:57.911-0500    done dumping mydb.users (25000 documents)
2018-08-20T10:11:57.911-0500    writing mydb.system.indexes to /var/backups/mongo/mydb/system.indexes.bson

En este comando, el argumento más importante es --db. Especifica el nombre de la base de datos que desea respaldar. Si no especifica este argumento, el comando Mongodump realizará una copia de seguridad de todas sus bases de datos, lo que puede ser un proceso muy intensivo.

Copia de seguridad de una sola colección

$ mongodump -d mydb -o /var/backups/mongo --collection users

Este comando respaldará solo la colección de usuarios en la base de datos mydb. Si no le da esta opción, se realizará una copia de seguridad de toda la colección en la base de datos de forma predeterminada.

Hacer copias de seguridad periódicas con Mongodump/Mongorestore

Como práctica estándar, debe realizar copias de seguridad periódicas de su base de datos MongoDB. Suponga que desea realizar una copia de seguridad todos los días a las 3:03 a. m.; luego, en un sistema Linux, puede hacerlo agregando una entrada cron en crontab.

$ sudo crontab -e

Agregue esta línea en crontab:

3 3 * * * mongodump --out /var/backups/mongo

Restaurar una base de datos completa

Para restaurar la base de datos, podemos usar el comando Mongorestore con la opción --db. Leerá los archivos BSON creados por Mongodump y restaurará su base de datos.

$ sudo mongorestore --db mydb /var/backups/mongo/mydb

Salida

2018-07-20T12:44:30.876-0500    building a list of collections to restore from /var/backups/mongo/mydb/ dir
2018-07-20T12:44:30.908-0500    reading metadata file from /var/backups/mongo/mydb/users.metadata.json
2018-07-20T12:44:30.909-0500    restoring mydb.users from file /var/backups/mongo/mydb/users.bson
2018-07-20T12:45:01.591-0500    restoring indexes for collection mydb.users from metadata
2018-07-20T12:45:01.592-0500    finished restoring mydb.users (25000 documents)
2018-07-20T12:45:01.592-0500    done

Restaurar una colección completa

Para restaurar solo una colección de db, puede usar el siguiente comando:

$ mongorestore -d mydb -c users mydb/users.bson

Si su colección está respaldada en formato JSON en lugar de BSON, puede usar el siguiente comando:

$ mongoimport --db mydb --collection users --file users.json --jsonArray

Ventajas

  • Muy fácil de usar
  • Tienes acceso completo a tu copia de seguridad
  • Puede colocar sus copias de seguridad en cualquier ubicación, como recursos compartidos de NFS, AWS S3, etc.

Desventajas

  • Cada vez se necesitará una copia de seguridad completa de la base de datos, no solo la diferencia.
  • Para bases de datos grandes, puede llevar horas hacer una copia de seguridad y restaurar la base de datos.
  • No es un punto en el tiempo de forma predeterminada, lo que significa que si sus datos cambian mientras se realiza la copia de seguridad, es posible que la copia de seguridad produzca incoherencias. Puede usar la opción --oplog para resolver este problema. Tomará una instantánea de la base de datos al final del proceso mongodump.

Administrador de operaciones de MongoDB

Ops Manager es una aplicación de gestión para MongoDB que se ejecuta en su centro de datos. Realiza copias de seguridad de sus datos de forma continua y proporciona procesos de restauración puntuales para su base de datos. Dentro de esta aplicación, hay un agente que se conecta a sus instancias de MongoDB. Primero realizará una sincronización inicial para hacer una copia de seguridad del estado actual de la base de datos. El agente seguirá enviando los datos de oplog comprimidos y encriptados a Ops Manager para que pueda tener una copia de seguridad continua. Usando estos datos, Ops Manager creará instantáneas de la base de datos. Creará una instantánea de su base de datos cada 6 horas y los datos de registro de operaciones se almacenarán durante 24 horas. Puede configurar el cronograma de instantáneas en cualquier momento usando el Administrador de operaciones.

Ventajas

  • Es un punto en el tiempo por defecto
  • No afecta el rendimiento de la producción, excepto la sincronización inicial
  • Compatibilidad con instantáneas coherentes de clústeres fragmentados
  • Flexibilidad para excluir colecciones no críticas

Desventajas

  • La latencia de la red aumenta con el tamaño de la instantánea mientras se restaura la base de datos.

Administrador de la nube de MongoDB

MongoDB Cloud Manager es una solución de copia de seguridad basada en la nube que proporciona una solución de restauración en un momento dado, copia de seguridad continua y en línea como un servicio totalmente gestionado. Simplemente puede instalar el agente Cloud Manager para administrar la copia de seguridad y la restauración de su base de datos. Almacenará sus datos de copia de seguridad en la nube de MongoDB.

Ventajas

  • Muy fácil de usar. Buena GUI.
  • Copia de seguridad continua de consultas y oplog.

Desventajas

  • Sin control sobre los datos de copia de seguridad. Se almacena en la nube de MongoDB.
  • El costo depende del tamaño de los datos y la cantidad de cambios en el registro de operaciones.
  • El proceso de restauración es lento.

Archivos de base de datos de instantáneas

Esta es la solución más simple para hacer una copia de seguridad de su base de datos. Puede copiar todos los archivos subyacentes (contenido de datos/directorio) y colocarlos en cualquier ubicación segura. Antes de copiar todos los archivos, debe detener todas las operaciones de escritura en curso en una base de datos para garantizar la coherencia de los datos. Puede usar el comando db.fsyncLock() para detener todas las operaciones de escritura.

Hay dos tipos de instantáneas:una son instantáneas a nivel de nube y otra son instantáneas a nivel de sistema operativo.

Si está almacenando datos de la base de datos con un proveedor de servicios en la nube como AWS, debe tomar instantáneas de AWS EBS para realizar copias de seguridad. Por el contrario, si está almacenando archivos de base de datos en un sistema operativo nativo como Linux, entonces debe tomar instantáneas de LVM. Las instantáneas de LVM no son portátiles a otras máquinas. Por lo tanto, las instantáneas basadas en la nube son mejores que las instantáneas basadas en el sistema operativo.

Ventajas

  • Fácil de usar.
  • Control total sobre las instantáneas. Puede moverlo a cualquier centro de datos.
  • Estas instantáneas son instantáneas diferentes que almacenan solo las diferencias con las instantáneas anteriores.
  • No es necesario descargar las instantáneas para restaurar su base de datos. Simplemente puede crear un nuevo volumen a partir de su instantánea.

Desventajas

  • Usando este método, solo puede restaurar su base de datos en los puntos de ruptura.
  • El mantenimiento se vuelve muy complejo a veces.
  • Para coordinar las copias de seguridad en todos los conjuntos de réplicas (en un sistema fragmentado), necesita un equipo especial de desarrollo.

Herramienta de copia de seguridad consistente de MongoDB

La copia de seguridad coherente de MongoDB es una herramienta para realizar copias de seguridad coherentes de los clústeres de MongoDB. Puede hacer una copia de seguridad de un clúster con uno o varios fragmentos en un solo punto de la base de datos. Utiliza Mongodump como método de copia de seguridad predeterminado. Ejecute el siguiente comando para realizar una copia de seguridad con esta herramienta.

$ mongodb-consistent-backup -H localhost -P 27017 -u USERNAME -p PASSWORD -l /var/backups/mongo

Todas las copias de seguridad generadas por estos comandos son compatibles con MongoRestore. Puede utilizar el comando mongorestore con la opción --oplogReplay para garantizar la coherencia.

$ mongorestore --host localhost --port 27017 -u USERNAME -p PASSWORD --oplogReplay --dir /var/backups/mongo/mydb/dump

Ventajas

  • Código completamente abierto
  • Funciona con un clúster fragmentado
  • Proporciona una opción para copias de seguridad remotas como Amazon S3
  • Escala automática disponible
  • Muy fácil de instalar y ejecutar

Desventaja

  • Producto no completamente maduro
  • Muy pocas opciones de carga remota
  • No admite el cifrado de datos antes de guardarlos en el disco
  • El repositorio de código oficial carece de pruebas adecuadas

Copia de seguridad de ClusterControl

ClusterControl es un sistema de administración de base de datos automatizado todo en uno. Le permite monitorear, implementar, administrar y escalar sus clústeres de bases de datos con facilidad. Es compatible con MySQL, MongoDB, PostgreSQL, Percona XtraDB y Galera Cluster. Este software automatiza casi todas las operaciones de la base de datos, como la implementación de un clúster, la adición o eliminación de un nodo de cualquier clúster, las copias de seguridad continuas, el escalado del clúster, etc. Todo esto lo puede hacer desde una sola GUI proporcionada por el sistema ClusterControl.

ClusterControl proporciona una interfaz gráfica de usuario muy agradable para la gestión de copias de seguridad de MongoDB con soporte para la programación y los informes creativos. Le ofrece dos opciones para los métodos de copia de seguridad.

  1. Mongodump
  2. Copia de seguridad coherente con Mongodb

Así los usuarios pueden elegir cualquier opción según sus necesidades. Esta herramienta asigna una ID única a todas las copias de seguridad y la almacena en esta ruta:ClusterControl> Configuración> Copia de seguridad> BackupID. Si el nodo especificado no está activo mientras se realiza la copia de seguridad, la herramienta encontrará automáticamente el nodo activo del clúster y llevará a cabo el proceso de copia de seguridad en ese nodo. Esta herramienta también proporciona una opción para programar las copias de seguridad utilizando cualquiera de los métodos de copia de seguridad anteriores. Puede habilitar/deshabilitar cualquier trabajo de programación con solo alternar un botón. ClusterControl ejecuta el proceso de copia de seguridad en segundo plano para que no afecte a los otros trabajos en la cola.

Ventajas

  • Fácil instalación y muy simple de usar
  • Múltiples opciones para métodos de copia de seguridad
  • La programación de copias de seguridad es muy sencilla mediante un sencillo formulario GUI
  • Verificación automática de copias de seguridad
  • Informes de copia de seguridad con estado

Desventaja

  • Ambos métodos de copia de seguridad utilizan internamente mongodump, que tiene algunos problemas con el manejo de bases de datos muy grandes.

Conclusión

Una buena estrategia de copia de seguridad es una parte fundamental de cualquier sistema de gestión de bases de datos. MongoDB ofrece muchas opciones para copias de seguridad y recuperación/restauración. Junto con un buen método de copia de seguridad, es muy importante tener varias réplicas de la base de datos. Esto ayuda a restaurar la base de datos sin tener el tiempo de inactividad de ni siquiera un segundo. A veces, para bases de datos más grandes, el proceso de copia de seguridad puede requerir muchos recursos. Por lo tanto, su servidor debe estar equipado con una buena CPU, RAM y más espacio en disco para manejar este tipo de carga. El proceso de copia de seguridad puede aumentar la carga en el servidor debido a estos motivos, por lo que debe ejecutar el proceso de copia de seguridad durante las noches o las horas de menor actividad.