💾 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
.gitignorepara 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.