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" #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
[1] Comentário enviado por SMagnus em 03/12/2012 - 10:24h
Estou com um problema,
tenho um Banco de Dados em MySQL de 3Gb que é existente a 4 anos e ele é feito pela ferramenta eZPublish ao começar a importar uma das maiores tabelas perto do insert de valor 596(numero de insert até o momento da tabela) ele entra em um Loop infinito e não permite o termino do insert.. quando você abre o arquivo em os editores de texto dão problemas e o vi não consegue lelo direito... como posso quebra-lo em partes ou só fazer o backup por tabela... você pode me ajudar com isso????