Script de backup de banco de dados Mysql

Criando um script de backup de banco de dados Mysql feito em Shell Script.

Por | Mysql

Fala pessoal tudo beleza?

Nesse artigo vou mostrar um script bem bacana para fazer backup de banco de dados Mysql.

O script irá gerar um arquivo de log para futuras consultas e também terá a opção de remover os backups antigos. Uma dica interessante é utilizar notificações para que quando ocorrer algum erro seja enviado um email ou uma notificação.

Bora então ver esse script?

Irei colocar trechos do código do script separadamente e com explicações. No final deixarei um link para você poder baixar o script completo, ok?

Aqui iremos definir o caminho de onde serão salvos os arquivos de logs.

# Caminho do arquivo de log
LOG_DIR=/var/log/backup
LOG=$LOG_DIR/backup_db_$ANO$MES$DIA.log

Nesse trecho definimos o diretório que os backups serão salvos.

# Diretorio onde serão salvos os backups
DIR_BK=/var/backups/database

Para evitar erros durante o processo, antes de salvarmos os arquivos de log e backup iremos verificar se o diretório existe, caso não, iremos criar.

# Verifica se existe o diretorio para armazenar os logs
if [ ! -d $LOG ]; then
    mkdir $LOG
fi

# Verifica se existe o diretorio para o backup
if [ ! -d $DIR_BK ]; then
    mkdir -p $DIR_BK
fi

Aqui vai uma dica bastante útil, você pode definir os bancos de dados que serão backupeados durante o processo. Para isso informe o nome dos bancos separados por espaços.

# Lista dos bancos de dados que serão realizados o backup
DATABASES=(banco01 banco02 banco03)

Agora nesse trecho, iremos fazer um loop percorrendo a lista de bancos que foram informados na linha acima. Após o término do backup iremos compactar o arquivo sql em bz2.

# Loop para backupear todos os bancos
for db in "${DATABASES[@]}"; do
    # Mysql DUMP
    mysqldump -u$USER -p$PASS $db > $DIR_BK/$db'_'$DATA_ATUAL.sql

    # Compacta o arquivo sql em BZ2
    bzip2 $DIR_BK/$db'_'$DATA_ATUAL.sql
done

Nessa linha, informamos que os backups com mais de 5 dias serão removidos, assim economizando espaço. Você pode alterar o número de dias conforme sua necessidade.

# Remove arquivos de backups antigos
find $DIR_BK -type f -mtime +5 -exec rm -rf {} \;

Bom, até aqui vimos alguns trechos do script de backup, que somente eles não fazem sentido. Esse é um script simples, que pode ser melhorado, mas já resolve e muito nas rotinas de backups.

Para ter acesso a esse script você pode baixar pelo link abaixo.

Download do script!

Lembre-se, sempre faça backup e restore dos seus backups... Tenha certeza que quando for precisar restaurar um banco, você tenha um backup confiável!

O que achou desse script? Se tiver alguma dúvida deixa um comentário que faço questão em ajudar!

Até a próxima!

Aristides Neto

Aristides Neto

Sou programador web focado no back-end, mas esforçado no front e um grande entusiasta em gerenciamento de servidores Linux.

Veja também