Cheguei em Maringá!

Cheguei em Maringá! Vou ficar aqui por um tempo, para meu bebê nascer por aqui… Imagina o que eu passaria se ele nascesse mineiro!! (Brincadeirinha Duda, Licio, et al.)

Já estou matutando (ai, olha o jeito mineiro de falar) algumas coisas para o blog que vou aproveitar esse tempo para escrever…

Abraços aos que me leem…

PS: A foto é de uma parada bem bonitinha do caminho. <Propaganda gratuita>É do Graal Filó, vale a pena parar por lá se quiser tirar umas fotos…</Propaganda gratuita>

Dia 30 é dia de corinthiano doar sangue!

Mais uma vez estou divulgando essa bela campanha (de uma bela e grandiosa nação!)…

Se você é corinthiano, vista seu manto e vá doar sangue! Se você não é corinthiano, doe também…

Várias cidades aderiram ao projeto. Veja onde doar (em algumas cidades não será no dia 30).

Em Maringá, o pessoal da Fiel Maringá está organizando para dia 30 de maio, no hemocentro do HU.

Dia 30 estarei em Maringá, mas vai ser um dia bem corrido. Se eu não conseguir, vou em outro dia (com meu manto)… :)

Colabore.

Script simples para backup de BD MySQL

Nos últimos dias estou até aprendendo um pouco melhor shell script para implementar um scriptizinho de backup de banco de dados MySQL.

Obs: Após ler o post, leia o comentário do Arthur Furlan abaixo porque vale a pena…

O script é bem simples, faz um dump em um arquivo SQL, compacta e apaga o SQL (deixando só o arquivo compactado). Para ficar mais divertido, mandei ele apagar os backups antigos (mantém só os 10 últimos (exagero!)) e mandar e-mails avisando o status do backup. Ele manda e-mails sempre, mas pelo código você vai ver como é simples mandar e-mails só em caso de erros. No início achei interessante mandar e-mails sempre para confirmar que o backup está funcionando legal.

Depois coloquei na cron do Linux (Ubuntu) para executar todos os dias às 2h da manhã (que você pode configurar de acordo com sua necessidade).

Segue abaixo (Atualização: seguindo a dica do Alexandre no comentário, passei a usar o gzip):

#!/bin/bash
U_PASTA="/home/user/backup" # < -- substitua pelo caminho onde vai salvar o backup
U_DATA=$(/bin/date +%Y%m%d%H%M%S)
U_CAMINHO="backup-$U_DATA.sql"
U_HOST="localhost"
U_USER="root"
U_PASSWORD="********"
U_DATABASE="minha_base_mysql"
U_EMAIL="[email protected]"
#
erro=""
#
cd $U_PASTA
#
#
# Faz o backup do MySQL
#
mysqldump -h $U_HOST -u $U_USER -p$U_PASSWORD $U_DATABASE > $U_CAMINHO
if [ $? -ne 0 ]
then
    erro="Erro na geracao do SQL"
fi
#
#
# Compacta o arquivo
#
if [ "$erro" == "" ]
then
    gzip $U_CAMINHO
    if [ $? -ne 0 ]
    then
        erro="Erro ao compactar o SQL"
    fi
fi
#
# Apaga arquivos antigos e mantem apenas os 'n' ultimos
#
n=10
c=0
for i in *.sql.gz
do
    let c=$c+1
done
if [ $c -gt $n ]
then
    for i in *.sql.gz
    do
        if [ $c -le $n ]
        then
            break
        fi
        rm $i
        let c=$c-1
    done
fi
#
if [ "$erro" == "" ]
then
    erro="Backup efetuado com sucesso!"
    subject="[Sucesso]"
else
    subject="[Erro]"
fi
echo "$erro => $U_CAMINHO.gz" | mail -s "$subject Backup em $(/bin/date +'%d/%m/%Y %H:%M:%S')" $U_EMAIL
#
# Volta para a pasta anterior
cd -

Para agendar a execução, digite:

$ crontab -e

Vai abrir um editor de texto com o arquivo de configuração da cron. Daí você pode digitar algo como:

# m h  dom mon dow   command
00 02 * * * /home/user/backup_bd.sh

Onde backup_bd.sh é o arquivo do script que passei acima.

É isso. Espero que seja útil.

PS: Modifiquei algumas coisas na hora de publicar para não expor minha base, daí espero que não tenha cometido nenhum erro.

Outro PS: O script é meio amador, mas funciona legal. A base que faço backup gera um arquivo sql de 117Mb, compactado cai para 18Mb, e tudo isso em cerca de 15 segundos