Backup de banco de dados MySQL com mysqldump

Este script faz um backup, diariamente, de todas as bases de dados do MySQL.
Eu adicionei uma linha a mais, opcional, para apagar backups antigos. Ou seja, o script funciona para um backup diário do MySQL, e apaga backups antigos (opcional).
No meu caso, vai apagar todos os backups de 20 dias. Eu só preciso guardar 20 dias de backups, mas você pode colocar a quantidade de dias que for de sua necessidade.

#!/bin/bash
#Script de backup de banco de dados Mysql.
#Leonardo Macedo Cerqueira – leonardo.macedo.c@gmail.com

DATA=$(date +”%d-%m-%Y”) #definição de variável para a data dos backups.
DEST=”/backup/mysql” #pasta de destino do backup.
DESTDAY=”${DEST}/bkp-mysql-$DATA/” #pasta de backup diario

# Login do usuario root do mysql:
MUSER=”root”              &nbs p; #login do usuario administrativo do mysql.
MPASS=”senha_do_root_mysql’   # senha.
MHOST=”127.0.0.1″       #ip que o mysql esta up. no caso localhost

#Caminhos dos binarios: mysql, gzip e mysqldump.
MYSQL=”$(which mysql)”
MYSQLDUMP=”$(which mysqldump)”
GZIP=”$(which gzip)”

#Rotina de Backup.
[ ! -d “${DEST}” ] && mkdir -p “${DEST}”
### consultando todas os bancos/bases de dados do mysql:
DBS=”$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse ‘show databases’)”
for db in $DBS
do
/bin/mkdir -p $DESTDAY
FILE=${DEST}/bkp-mysql-$DATA/banco-${db}.${DATA}.gz
### execucao do backup
$MYSQLDUMP –single-transaction -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
done

#Apagando backups antigos
#Opcional. apaga PASTA de backups de 20 dias.
DATAREMOVE=$(date -d “20 day ago” +”%d-%m-%Y”)
/bin/rm -rf ${DEST}/bkp-mysql-$DATAREMOVE

Por fim, basta colocar o script no Cron, para que seja feito um backup diário:

#Backup executado todos os dias, as 02:00hrs.
00   02   *   *   *   /etc/init.d/backup-mysql.sh

Deixe um comentário