Executando verificação de segurança...
1

Como criar rotinas de backup para o seu banco de dados.

Tem uma frase de um livro que gosto muito que é a seguinte: 'Não adianta você investir em segurança da informação para proteger sua rede e esquecer-se de proteger os dados com backups.'. Essa frase é do 'MySQL Comece com o principal banco de dados open source do mercado', muito bom aliás. Perder dados por falha de hardware, erro humano ou problemas no servidor é um pesadelo que você não quer enfrentar.

A boa notícia é que se sua aplicação está rodando em um ambiente linux e seu banco é um mysql, você já tem tudo que precisa para automatizar a criação de seus backups e assim se previnir contra catastrofes.

Neste tutorial, vamos construir do zero uma rotina de backup do seu banco de dados MySQL, de maneira elegante e direta. Não se preocupe se você não é especialista em shell script, o script que precisamos pode ser entendido por qualquer um que já tenha lido código de alguma linguagem antes.

Adicionando as credenciais de conexão

Para podermos nos comunicar com o banco e realizar o nosso dump(nosso backup), precisamos inserir as credenciais de conexão com o banco para que as tabelas sejam lidas. Porém, deixar informações sensíveis não é uma boa prática, basta que nosso script vaze para o github e pronto, nosso banco estaria na internet. Ao invés de inserir direto no nosso script, podemos escrever nosso usuário e senha em um arquivo especial do mysql chamado .my.cnf que é um arquivo que o mysql lê antes de executar o dump. Recomendo que use o usuário root a partir de agora.

Criando o .my.cnf

No diretório /home/seu_usuario/ crie e abra o arquivo .my.cfn usando o comando nano(ele criará e abrira para que possamos editar o arquivo). Com o arquivo aberto, escreva o seguinte:

[mysqldump]
user=root
password=sua_senha_aqui

Pronto, agora o mysql já sabe se conectar com nosso banco para fazer backup sem que a gente precise passar na linha de comando o nosso usuário ou senha.

Criando o script shell

Um script shell nada mais é que um arquivo onde a gente pode escrever comandos de terminal, mas adicionando lógica neles, permitindo que a gente possa automatizar tarefas como verdadeiros administradores de sistemas. Para nossas rotinas, usaremos o seguinte script shell, não se preocupe se não entender de primeira:


# 1. Configurações Iniciais
DATABASE="nome_do_seu_banco"
BACKUP_DIR="/home/seu_usuario/backups"
LOG_DIR="/home/seu_usuario/logs"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
LOG_FILE="$LOG_DIR/backup_mysql.log"
CNF_FILE="/home/seu_usuario/.my.cnf"

# 2. Criar pastas caso não existam
mkdir -p $BACKUP_DIR
mkdir -p $LOG_DIR

echo "==========================================" >> $LOG_FILE
echo "Inicio do backup: $DATE" >> $LOG_FILE

# 3. Executar o mysqldump forçando a leitura do nosso arquivo seguro
/usr/bin/mysqldump --defaults-extra-file=$CNF_FILE $DATABASE > $BACKUP_DIR/backup_$DATABASE_$DATE.sql 2>> $LOG_FILE

# 4. Verificar se o comando anterior (mysqldump) rodou sem erros
if [ $? -eq 0 ]; then
        echo "Backup realizado com sucesso" >> $LOG_FILE
        # Compactar o arquivo SQL gerado
        gzip $BACKUP_DIR/backup_$DATABASE_$DATE.sql
        echo "Backup compactado" >> $LOG_FILE
else
        echo "ERRO ao realizar backup!" >> $LOG_FILE
fi

# 5. Limpar backups antigos (com mais de 7 dias)
/usr/bin/find $BACKUP_DIR -type f -mtime +7 -name "*.gz" -exec rm -f {} \; 2>> $LOG_FILE

echo "Fim do processo: $(date +"%Y-%m-%d_%H-%M-%S")" >> $LOG_FILE
echo "" >> $LOG_FILE

Tendo nosso arquivo criado, precisamos dar permissão a ele para que ele possa ser executado, para isso, usamos o chmod, mais especificamente chmod +x nosso_script.sh e pronto, nosso script já está pronto para ser executado e você já pode testar com um ./nosso_script.sh e verificar na "/home/seu_usuario/backups".

Automatizando com crontab

Nós já temos um script que pode gerar nossos backups, mas ainda falta automatizar para que não precisemos ficar executando manualmente o mesmo. Para isso, usaremos o contrab do próprio sistema operacional(semelhante ao scheduler do windows). Para acessar o contrab, com usuário root digite: "nano /etc/crontab". Com o crontrab aberto você deve estar vendo uma explicação de como agendar tarefas para serem executadas. Para executar a nossa rotina, navegue até a última lnha(abaixo ou acima do '#') e coloque os minuto, a hora, os dias, o usuário e o endereço do nosso script.
Segue um exemplo:

    00 3 * * * /home/seu_usuario/ate_nosso_script.sh

Conclusão

Se tudo deu certo, você agora tem uma rotina de backups que irá facilitar caso um dia venha a dar um delete sem where por acidente.

Carregando publicação patrocinada...
1