¿Cómo configurar respaldos de Mongodb a nuestra cuenta de amazon s3 en Ubuntu?


Cuando desarrollamos una aplicación o api  que utliza como base de datos Monogdb es muy importante poder realizar respaldos periodicos de nuestra base de datos.

Cómo primer paso debemos instalar aws-cli ejecutando el siguiente comando en nuestra terminal.

 sudo apt-get install awscli

Después de haber instalado aws-cli debemos configurar nuestras keys  para acceder a la cuenta de S3 ejecutando el siguiente comando en nuestra terminal.

  aws configure

Donde ingresaremos los siguientes datos:

  • AWS Access Key ID

  • AWS Secret Access Key

Ahora  debemos crear nuestro archivo .sh que ejecutara varios comandos para realizar nuestro respaldo, ejecutamos el siguiente comando en nuestra terminal.

sudo nano dump.sh
 #!/bin/sh
## creamos nuestro carpeta  en este caso se va a crear una  carpeta
## con la fecha por ejemplo 9-9-2017 9 de septiembre del 2017
DIR=`date +%m-%d-%y`
## ingresamos en donde queremos  guardar temporalmente nuestro respaldo
DEST=/home/ubuntu/db_backups/$DIR
## ingresamos el nombre del bucket de s3
BUCKET=mybucketbackup;
## creamos la carpeta para guardar nuestro respaldo
mkdir $DEST
## ejecutamos el comando  mongodump 
## -h host de la base de datos, si se encuentra en el mismo servidor por default podemos
## user locahost o 127.0.0.1
## -d nombre de la base de datos
## -o carpeta destino
## en este comando vamos a crear un respaldo de todas las colecciones de nustra db
## si queremos respaldar solo una colleccion podemos agregar el parametro
## -c user
## si queremos respaldar  solo algunos datos de nuestra coleccion podemos agregar el 
## siguiente parametro -q "{active : true }" ó --query "{ active : true}" 
## revisar documentación en https://docs.mongodb.com/manual/reference/program/mongodump/
mongodump -h "my host or locahost" -d mydb  -o $DEST
## ejecutamos nuestro comando para subir la carpeta a s3 igual podemos hacer un zip y subir solo el
## archivo comprimido
aws s3 --region us-west-2 sync $DEST s3://$BUCKET/db_backups/$DIR
##  eliminamos nuestra carpeta (opcional)
##rm -rf $DEST;

Ahora solo debemos ejecutar el siguiente comando para correr nuestro script

 sudo sh dump.sh

En nuestro siguiente post veremos como crear un cron job para realizar respaldos automaticos 1 o más veces al día.