Home Tutoriais Banco de Dados 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
   

Leave a Reply

This blog is kept spam free by WP-SpamFree.