Pular para o conteúdo principal

💾 Backup MongoDB via Cron

Este tutorial ensina como configurar backups automáticos do MongoDB utilizando um script bash com mongodump e agendamento via cron.


🧰 Pré-requisitos

  • MongoDB já instalado no servidor

  • Usuário com permissões para realizar mongodump

  • Permissões para editar crontab

  • Script de backup configurado (exemplo abaixo)


📜 Script de Backup

Por padrão, os ambientes MongoDB criados na SaveinCloud já incluem um script de backup localizado em:

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

Esse script utiliza o utilitário mongodump para gerar os arquivos de backup de forma automática.

🔧 Para começar a usá-lo, basta editar as primeiras variáveis do script e inserir suas credenciais, conforme informadas por e-mail no momento da criação do ambiente.

Exemplo:

MONGO_USERNAME="admin"
MONGO_PASSWORD="sua_senha_aqui"

Após configurar, você pode testar o script manualmente executando:

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

Ou agendá-lo no cron para backups automáticos.

Abaixo, deixamos disponivel o script por completo, caso não tenha mais em seu ambiente basta criá-lo e adicionar o conteúdo.

Caso ja possua o arquivo correto, pule para o próximo passo.


#!/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;

🔐 Permissões

Torne o script executável:


chmod +x /caminho/para/mongo_backup.sh



⏰ Agendamento com cron

Edite o crontab com:


crontab -e

Adicione a linha abaixo para rodar o backup todos os dias às 2h da manhã:

Ou altere para o horário que preferir.


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


💡 Dicas adicionais

  • O log dos backups será armazenado em /var/log/mongodb/backup.log

  • Use .gitignore para nunca versionar seus backups ou scripts com senhas


✅ Conclusão

Este método garante backups diários automáticos dos seus bancos MongoDB, com rotação automática dos arquivos e baixo impacto operacional.

Ideal para ambientes em produção, desenvolvimento e testes.