Com certeza você já deve conhecer diversas maneiras de realizar backup de sua base Mysql. Mas o objetivo deste howto é apenas uma variação de um script clássico de backup.
Vamos ao problema:
A maioria das pessoas utilizam este comando para backup:
mysqldump -u root -pPASSWORD –all-databases | gzip > /mnt/database`data ‘ %m-%d-%Y’`.sql.gz
Isso vai gerar um backup de todos os bancos de dados de seu SGBD e compactar com o nome de data 03/22/2012.sql.gz. O problema esta ai, pois ele irá gerar todas as querys em um único arquivo, ou seja, se você quiser restaurar um único banco de dados, terá que procurar o trecho no dump que corresponde ao banco desejado.
A solução apresentada abaixo é uma alternativa, onde a partir de um laço, lê todos os elementos do SGBD, e gera um dump já compactado de cada banco, separadamente.
[shell]
#!/bin/bash
# backup mysql com –all-databases, mas separados cada banco em um único arquivo
DIR=”/var/arquivos_backup/mysql”
USER=”root”
PASSWORD=”senha”
OUTPUTDIR=”/var/lib/databases”
MYSQLDUMP=”/usr/bin/mysqldump”
MYSQL=”/usr/bin/mysql”
# elimando arquivos de backup antigos
rm -rf $DIR/*
# lendo a lista de banco de dados
databases=`$MYSQL –user=$USER –password=$PASSWORD \
-e “SHOW DATABASES;” | tr -d “| ” | grep -Ev ‘(Database|information_schema)’`
# realizando o dump e compactando cada arquivo gerado
for db in $databases; do
echo $db
$MYSQLDUMP –force –opt –user=$USER –password=$PASSWORD \
–databases $db | gzip > “$OUTPUTDIR/$db.gz”
done
[/shell]
Com essa idéia, pode-se editar um pouco mais este script, como por exemplo compactar a pasta com todos os arquivos gerados, e já transferir para seu storage com Active Directory, por exemplo.
Aqui disponibilizo para download um script exatamente com essa idéia em prática.
Script de Backup – Mysql – Com depósito no Storage – AD
Depois é só colocar no CronTab.
Referência: snowfrog.net
Otima solução! Obrigado!
Cuidado com a linha:
# elimando arquivos de backup antigos
11.rm -rf $DIR/*
Detonou meu HD e ferrou todos os arquivos. Tem que declarar a variável antes. Por favor, corrigir o script.
At.
Corrigido. No arquivo txt onde tem o script completo esta variável esta declarada. Desculpe qualquer problema causado.