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