Skip to content

Posts tagged ‘Backup’

12
Mai

Script simples para backup de BD MySQL

Nos últi­mos dias estou até apren­dendo um pouco mel­hor shell script para imple­men­tar um scrip­tiz­inho de backup de banco de dados MySQL.

O script é bem sim­ples, faz um dump em um arquivo SQL, com­pacta e apaga o SQL (deixando só o arquivo com­pactado). Para ficar mais diver­tido, man­dei ele apa­gar os back­ups anti­gos (man­tém só os 10 últi­mos (exagero!)) e man­dar e-mails avisando o sta­tus do backup. Ele manda e-mails sem­pre, mas pelo código você vai ver como é sim­ples man­dar e-mails só em caso de erros. No iní­cio achei inter­es­sante man­dar e-mails sem­pre para con­fir­mar que o backup está fun­cio­nando legal.

Depois colo­quei na cron do Linux (Ubuntu) para exe­cu­tar todos os dias às 2h da manhã (que você pode con­fig­u­rar de acordo com sua necessidade).

Segue abaixo:

#!/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_CAMINHOTAR="backup-$U_DATA.tar.gz"
U_HOST="localhost"
U_USER="root"
U_PASSWORD="********"
U_DATABASE="minha_base_mysql"
U_EMAIL="meuemail@meudominio.com.br"
#
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
    tar zcvf $U_CAMINHOTAR $U_CAMINHO
    if [ $? -ne 0 ]
    then
        erro="Erro ao compactar o SQL"
    fi
fi
#
#
# Remove o arquivo sql que nao sera mais usado
#
if [ "$erro" == "" ]
then
    rm -f $U_CAMINHO
    if [ $? -ne 0 ]
    then
        erro="Erro ao apagar arquivo SQL temporario"
    fi
fi
#
#
# Apaga arquivos antigos e mantem apenas os 'n' ultimos
#
n=10
c=0
for i in *.tar.gz
do
    let c=$c+1
done
if [ $c -gt $n ]
then
    for i in *.tar.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_CAMINHOTAR" | mail -s "$subject Backup em $(/bin/date +'%d/%m/%Y %H:%M:%S')" $U_EMAIL
#
# Volta para a pasta anterior
cd -

Para agen­dar a exe­cução, digite:

$ crontab -e

Vai abrir um edi­tor de texto com o arquivo de con­fig­u­ração da cron. Daí você pode dig­i­tar algo como:

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

Onde backup_bd.sh é o arquivo do script que pas­sei acima.

É isso. Espero que seja útil.

PS: Mod­i­fiquei algu­mas coisas na hora de pub­licar para não expor minha base, daí espero que não tenha cometido nen­hum erro.

Outro PS: O script é meio amador, mas fun­ciona legal. A base que faço backup gera um arquivo sql de 117Mb, com­pactado cai para 18Mb, e tudo isso em cerca de 15 segun­dos

via: Andre Noel

23
Abr

Backup MySQL em servidor remoto

Backup entre dois servi­dores  [Local] e [Remote].

mysql­dump –u USERNAME –pPASS­WORD nome-da-db >/home/mysqlbak/mysqldump.sql
rsync –avz /home/mysqlbak/mysqldump.sql username@ip-do-servidor-remoto:/home/mysqlbak/mysqldump.sql

Podem ler mais neste post: http://www.webkaput.com/backup-em-servidor-remoto/

Bad Behavior has blocked 67 access attempts in the last 7 days.