Backups noturnos automáticos fáceis para MongoDB

Fazer backup do banco de dados MongoDB todas as noites é uma boa prática para garantir a segurança dos dados caso algo aconteça com o servidor. Obviamente, manter uma cópia de tudo em algum lugar diferente do servidor de banco de dados é uma ótima maneira de garantir que, caso algo aconteça, você possa restaurar e voltar a executar rapidamente.

Muitos hosts oferecem serviços de backup como um serviço pago, compre porque pagar quando você pode configurar facilmente backups noturnos automáticos de seu banco de dados por conta própria, em apenas alguns minutos.

Esta é uma breve visão geral do que vamos fazer:

  • Crie um script que cria automaticamente um diretório de backup para a data atual e exporta seu banco de dados MongoDB para esse diretório.
  • Coloque esse script em um servidor que possa executar scripts cron para você
  • Configure o cron para executar o script à noite para executar o backup

Etapa 0: coloque seus patos em uma fileira

Antes de começarmos a escrever o script, vamos precisar criar um local em nosso servidor para os arquivos de backup. Por exemplo, digamos que você deseja manter seus backups na raiz do seu servidor web, em uma pasta chamada db_backups.

Basta criar esse diretório no servidor:

mkdir /db_backups

Etapa 1: Escreva o Script

Agora que isso já foi resolvido, vamos escrever um pequeno script de shell que cria um diretório para o dia atual e, em seguida, despeja o MongoDB nele. Esse script é parecido com este:

#!/bin/sh
DIR
=`date +%m%d%y`
DEST
=/db_backups/$DIR
mkdir $DEST

mongodump
-h <your_database_host> -d <your_database_name> -u <username> -p <password> -o $DEST

Este é um pequeno script de shell realmente simples que simplesmente cria um nome de diretório usando a data (no formato MMDDAA), reúne o caminho completo para o diretório a ser criado, cria o referido diretório e, finalmente, usa o mongodumputilitário Mongo para exportar o banco de dados no diretório.

Crie este script e salve-o em algum lugar em seu servidor, talvez em um local semelhante que você reconheça.~/scripts

Etapa 2: configurar o cron para executar o script todas as noites

Agora que temos nosso script de backup pronto para funcionar, precisamos apenas colocá-lo em execução todas as noites para realizar os backups. Isso é feito facilmente usando cron para executar o script.

Em seu servidor, basta abrir o crontab desta forma:

sudo crontab -e

Nesse arquivo, abaixo de todos os comentários na parte superior, insira a seguinte linha:

45 1 * * * ../../scripts/db_backup.sh

No cron, cada linha representa uma entrada registrada. O formato de cada entrada informa ao Cron como agir e apresenta 5 campos diferentes para especificar o dia e a hora de execução do comando. Esses campos vão nesta ordem: minuto, hora, dia do mês, mês, dia da semana. Um asterisco significa que ele será executado a cada divisão do intervalo (portanto, se você colocar um asterisco no segundo campo, ele será executado a cada hora).

Portanto, em nossa entrada acima, estamos dizendo ao cron para executar nosso script (o caminho que você vê na entrada), às 1h45 todas as noites. Fácil! Apenas salve seu crontab e saia, e você estará pronto para as corridas.

Pontos bônus

Outras coisas que você pode querer fazer para aprimorar este script: Remova os diretórios com 30 dias. Se você não precisa manter mais de 30 dias de backups, simplesmente remova os diretórios antigos ao mesmo tempo que faz o backup noturno.

Proteja seu script usando variáveis ​​de ambiente para senha. Colocar sua senha de banco de dados de texto simples em um script como essa não é a ideia mais segura do mundo. Considere o uso de uma variável de ambiente dinâmica para preencher sua senha, caso seu script acabe na frente dos olhos errados. Você também pode considerar a conexão com o Mongo via ssh, mas isso está fora do escopo deste artigo.

Espero que isso ajude você a entender melhor como fazer backup do banco de dados MongoDB todas as noites! É uma coisa fácil de configurar e lhe dará grande tranquilidade, sabendo que todos os seus dados estão sãos e salvos em caso de desastre.