Saltar al contenido principal

💾 Copia de Seguridad MongoDB vía Cron

Este tutorial enseña cómo configurar copias de seguridad automáticas de MongoDB utilizando un script bash con mongodump y programación vía cron.


🧰 Requisitos previos

  • MongoDB ya instalado en el servidor

  • Usuario con permisos para realizar mongodump

  • Permisos para editar crontab

  • Script de copia de seguridad configurado (ejemplo abajo)


📜 Script de Copia de Seguridad

Por defecto, los entornos MongoDB creados en SaveinCloud ya incluyen un script de copia de seguridad ubicado en:

/var/lib/jelastic/bin/backup_script.sh

Este script utiliza la utilidad mongodump para generar los archivos de copia de seguridad de forma automática.

🔧 Para comenzar a usarlo, solo edite las primeras variables del script e inserte sus credenciales, según se le informó por correo electrónico al crear el entorno.

Ejemplo:

MONGO_USERNAME="admin"
MONGO_PASSWORD="sua_senha_aqui"

Después de configurar, puede probar el script manualmente ejecutando:

bash /var/lib/jelastic/bin/backup_script.sh

O programarlo en el cron para copias de seguridad automáticas.

A continuación, dejamos disponible el script completo, en caso de que ya no lo tenga en su entorno solo créelo y agregue el contenido.

Si ya posee el archivo correcto, pase al siguiente paso.


#!/bin/bash



MONGO_USERNAME="admin";

MONGO_PASSWORD="<SUA_SENHA>";

DAYS_TO_STORE=3;

BACKUP_LOG="/var/log/mongodb/backup.log";

BACKUP_DIR="/var/lib/jelastic/backup"



# DATABASES_LIST=("db1" "db2"); # Descomente para backup seletivo



function createBackup(){

local backup_date=$(date +"%d-%m-%y-%H%M%S");

local MONGODUMP=$(which mongodump);

local MONGOSHELL=$(which mongo);

ARCHIVE_NAME=MongoBackup-${backup_date};

BACKUP_TARGET="$BACKUP_DIR/$ARCHIVE_NAME";



$MONGOSHELL -u "$MONGO_USERNAME" -p "$MONGO_PASSWORD" admin --eval "db" >/dev/null 2>/dev/null || {

echo "Login no MongoDB falhou";

return 0;

}



echo $(date) Iniciando backup em: $BACKUP_TARGET

[ ! -d $BACKUP_TARGET ] && mkdir -p $BACKUP_TARGET

cd $BACKUP_TARGET



if [ ! -z "$DATABASES_LIST" ]; then

for dbname in ${DATABASES_LIST[@]}; do

$MONGODUMP -u "$MONGO_USERNAME" -p "$MONGO_PASSWORD" -d $dbname >> $BACKUP_LOG 2>&1;

done

else

$MONGODUMP -u "$MONGO_USERNAME" -p "$MONGO_PASSWORD" >> $BACKUP_LOG 2>&1;

fi



echo "$(date) Compactando arquivos..." >> $BACKUP_LOG

cd ..

tar -zcvf "$BACKUP_DIR/${ARCHIVE_NAME}.tgz" "./$ARCHIVE_NAME" >> $BACKUP_LOG 2>&1;

rm -rf $BACKUP_TARGET;



echo "$(date) Removendo backups mais antigos que $DAYS_TO_STORE dias..." >> $BACKUP_LOG

find $BACKUP_DIR -name "*.tgz" -mtime "+${DAYS_TO_STORE}" -exec rm {} \;

echo "$(date) Backup concluído com sucesso." >> $BACKUP_LOG

}



createBackup;

🔐 Permisos

Haga el script ejecutable:


chmod +x /caminho/para/mongo_backup.sh



⏰ Programación con cron

Edite el crontab con:


crontab -e

Agregue la línea siguiente para ejecutar la copia de seguridad todos los días a las 2 a.m.:

O cámbielo al horario que prefiera.


0 2 * * * /var/lib/jelastic/bin/backup_script.sh


💡 Consejos adicionales

  • El registro de las copias de seguridad se almacenará en /var/log/mongodb/backup.log

  • Use .gitignore para nunca versionar sus copias de seguridad o scripts con contraseñas


✅ Conclusión

Este método garantiza copias de seguridad diarias automáticas de sus bases MongoDB, con rotación automática de archivos y bajo impacto operativo.

Ideal para entornos en producción, desarrollo y pruebas.