Cómo proteger MongoDB con Veeam

¿Qué es MongoDB?

MongoDB se ha convertido en la base de datos NoSQL más popular del mercado debido a su sencillez y performance. Muchas compañías han optado por implementarla para sus proyectos relacionados con la web y para Big Data. 

Su principal diferencial es que no cuenta con lenguaje SQL, y en cambio utiliza colecciones, que son una serie de documentos en una estructura JSON donde se almacenan los campos de información. Esto permite agilizar el desarrollo de nuevas aplicaciones sin la necesidad de una modificación del schema, ya que no lo utiliza. Los datos son almacenados en formato BSON, lo que garantiza un rendimiento superior al normal y permite además una  implementación escalable horizontalmente, de forma distribuida y altamente disponible.

¿Cómo protejo MongoDB con Veeam?

Siempre es necesario proteger cualquier tipo de aplicación, en este caso realizaremos la protección al lanzar un respaldo a través de script con un dump de los datos ejecutando Veeam Backup & Replication.

MongoDB tiene distintas formas de protección de datos, algunas son comerciales (incluidas en la versión Enterprise), y también se puede acceder a la versión Community con la cual es posible realizar snapshots de file system, dumps y por último snapshots de máquinas virtuales. Recomendamos tomar la precaución de acuerdo con la intensidad de consultas o escritura que mantiene MongoDB para elegir el tipo de protección. En este caso realizaremos el respaldo de la VM completa, ya que MongoDB soporta la realización de respaldos vía snapshots, y también realizando un export de cada base de datos para conseguir una recuperación granular de los mismos.

Script respaldo

#!/bin/bash
host="mongodb" # Name of mongodb host
user="userName" # User of MongoDB with admin privileges
pass="**********" # Password user
port="27017" # Port of MongoDB
hour=`date +%H%M_%d%m%Y` # date and hour for file name
mkdir -p /backup/mongobackups # Path where leave the backups
mongodump --host $host --port $port --username $user --password $pass --out=/backup/mongobackups 
cd /backup/mongobackups # Enter to Path for create tar.gz
tar -czvpf /backup/mongobackups/backup_$hour.tar.gz * # Create tar.gz file
rm -R `ls -1 -d */` # Remove Folders.
exit 0 # Success.

Para usar el script anterior, solo es necesario copiar al servidor de Veeam Backup & a una ruta conocida, por ejemplo C:\Scripts.

Los campos a editar son:

host="mongodb" # Name of mongodb host
user="UserName" # User of MongoDB with admin privileges
pass="**********" # Password user
port="27017" # Port 

El script restante se debe dejar intacto.

*En el caso de error de Ejecución del script, por favor revisar si existe algún carácter especial incrustado por Microsoft Windows; por lo general un ^M generará el error 126, para solucionarlo se debe guardar el archivo como bash file, usando Notepad++. Ejemplo:

Configuración del Job en Veeam Backup & Replication

Realizar un job de respaldo de máquina virtual o vía agente de acuerdo con las necesidades del cliente, y establecer la configuración del script en Application Aware, como se observa en la siguiente imagen:

Con esta configuración, tendremos la ejecución del script antes del snapshot de la máquina virtual o de la máquina física para el respaldo de MongoDB.

En el siguiente ejemplo se muestra una ejecución exitosa:

Para validar que tenemos el respaldo de MongDB en el servidor, debemos ingresar vía SSH y listar el directorio que configuramos, en este caso /backup/mongobackups/

Además, se debe validar el contenido del respaldo para ver las bases de datos de MongoDB a través del FLR:

Con esto tenemos asegurados los datos y las bases de datos de MongoDB granularmente para su restauración desde Veeam B&R y MongDB.

Recuperación de MongoDB

Esta guía asume que el lector conoce todas las vías de recuperación de máquinas virtuales o físcas con Veeam Backup & Replication; por lo tanto, a continuación se resolverá la restauración granular de bases de datos de MongoDB.

Al realizar la recuperación de archivos de acuerdo con la necesidad de recuperación, debemos posicionamos en la carpeta en la que se hayan copiado los archivos y listar el contenido.

Para luego descomprimir el archivo necesario:

Luego debemos listar el directorio completo para revisar los archivos extraídos.

Como se puede ver en la imagen anterior, cada carpeta extraída es una base de datos con sus configuraciones y colecciones.

En este caso, eliminaremos la colección “Countries” que mantiene todos los países en los campos de MongoDB:

Como se puede observar, la colección “Countries” ya no existe en la base de datos de Veeam.

Ahora procederemos a recuperar los datos de la base de datos de Veeam.

Con el comando:

mongorestore -d veeam veeam/ --username=mescobar --password=SuperDuperPass

donde -d veeam es el nombre de la base de datos y veeam/ es la carpeta que queremos recuperar desde el respaldo, además se debe indicar usuario y password para la recuperación correcta.

Se verá el siguiente resultado:

2020-01-27T19:48:25.215-0300    finished restoring veeam.countries (21640 documents, 0 failures)
2020-01-27T19:48:25.215-0300    21640 document(s) restored successfully. 0 document(s) failed to restore.

También, al actualizar el IDE de MongoDB, se reflejará la recuperación:

Recomendaciones

De acuerdo con el manual de MongoDB es posible realizar distintos métodos de protección de datos utilizando las herramientas de pago de la propia solución, MongoDB, así como también a través de comandos nativos. Para saber los métodos disponibles es necesario visitar:

https://docs.mongodb.com/manual/core/backups/

Ahí es posible observar que un método oficial de respaldo consiste en realizar un snapshot de los sistemas de archivos donde residen los archivos de datos. Es por ello que, con tan solo un respaldo de Veeam Backup & Replication sin la intervención de script, ya es posible mantener la protección de MongoDB.

En esta guía además se ofrece un pequeño script para realizar recuperaciones granulares de las bases de MongoDB protegiendo la máquina virtual / física completa.

Quizás también le interese:

Stay up to date on the latest tips and news
Al enviar el formulario usted acepta que sus datos personales serán tratados de acuerdo a los términos de la Política de privacidad de Veeam.
You're all set!
Watch your inbox for our weekly blog updates.
Aceptar