Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Meu ubuntu
Por faelp22
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Fernando Bottega Hallberg em (última atualização em 02/07/2012)   [ 2650 hits ]

Login: fernandohallberg, 3028 pontos

Homepage: http://hallberg.eti.br

Download:


Descrição

O script funciona utilizando-se do log binário do MySQL para fazer o backup incremental da base de dados, que pode ser feito em intervalos curtos de tempo, e um backup full toda noite ou uma vez por semana.

O script também elimina os log binários mais antigos do que 15 dias da base de dados, para não ficar ocupando espaço em disco, sendo que este log já está no backup.

Baixe o script e configure as informações da base de dados e do ftp, ele criará um backup local do MySQL e sincronizará com o FTP ( arquivos mais antigos do que 30 dias serão apagados do backup local, e ficarão somente no FTP ).

No script tem exemplos de como configurar o crontab para executá-lo, lembre-se de configurar o PATH para o script corretamente.

É necessário que o rsync e o lftp estejam instalados no sistema.

Se tiverem dúvidas, sugestões ou correções, favor postarem!

http://hallberg.eti.br/wp/?p=38


[ Download: flx-mybkp.txt ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

#!/bin/bash
##
# MySQL BACKUP SCRIPT
# Fernando Hallberg
# http://www.hallberg.eti.br
# fernando at hallberg dot eti dot br
##
# Configure a os dados do banco e certifique-se de habilitar o log binário
# EX CRON:
# de segunda a sábado 4 vezes no dia realiza o backup do log binário
# 30 0,8,12,18 * * 1-6 /usr/sbin/flx-mybkp incremental
# domingo de manhã realiza o backup completo da base
# 2 0 * * 0 /usr/sbin/flx-mybkp full
##

BANCO=MySQL_DB
MYSQLUSER=MySQL_USER
MYSQLPASS=MySQL_USER_PASSWORD
FTPUSER=FTP_USER
FTPPASS=FTP_PASSWORD
FTPHOST=FTP_HOST
FTPDIR=
BACKUPDIR=/var/backup

mkdir -p $BACKUPDIR
mkdir -p $BACKUPDIR/mysql/binlog
mkdir -p $BACKUPDIR/mysql/full


function diskusage() {
MAX=80
LANG=C /bin/df -P | tr -s ' '|cut -d ' ' -f1,5 | grep -v Cap | while read line;
do
        fs=$(echo $line | cut -d ' ' -f1)
        uso=$(echo $line | cut -d ' ' -f2| cut -d '%' -f1)
        if [ $uso -gt $MAX ];
        then
                echo "$fs esta $uso% cheio, verifique"
        fi
done
}

function usage(){
echo $0 [ full | incremental ]
}

function ftpsync(){
   /usr/bin/lftp -e "mirror --log=/tmp/lftp.log -v -R $BACKUPDIR mysqlbackup; bye" -u ${FTPUSER},${FTPPASS} ${FTPHOST} &> /dev/null
   [ $? -gt 0 ] && echo "LFTP ERROR: $?" && exit
}
function logsync(){

   binlog="`basename $(cat /etc/my.cnf | grep '^log-bin=' | cut -d '=' -f2)`"
   rsync -q -a /var/lib/mysql/$binlog.[0-9][0-9][0-9][0-9][0-9][0-9] $BACKUPDIR/mysql/binlog
   [ $? -gt 0 ] && echo "RSYNC ERROR: $?" && exit
   diskusage
}

function full(){

   /usr/bin/find $BACKUPDIR/mysql -type f -mtime +30 -delete

   FFILE="${BANCO}-backup-$(date +%Y-%m-%d_%H%M).sql.xz"

   /usr/bin/mysqldump -u ${MYSQLUSER} -p${MYSQLPASS} \
   --opt \
   --single-transaction \
   --no-autocommit \
   --all-databases \
   --flush-logs \
   --master-data \
   --routines | xz -2 -c - > ${BACKUPDIR}/mysql/full/${FFILE};
   [ $? -gt 0 ] && echo "MYSQLDUMP ERROR: $?" && exit

   logsync
   ftpsync

}

function incremental(){

   /usr/bin/mysql -e 'PURGE BINARY LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 15 DAY);'
   [ $? -gt 0 ] && echo "MYSQL PURGE LOG BINARY ERROR: $?" && exit
   /usr/bin/mysqladmin -u ${MYSQLUSER} -p${MYSQLPASS} flush-logs
   [ $? -gt 0 ] && echo "MYSQLADMIN flush-logs ERROR: $?" && exit
   logsync
   ftpsync
   
}


case "$1" in

'full' ) full ;;

'incremental') incremental ;;

esac



Scripts recomendados
   Script Linux recomendado script testador de ips para rede wireless
   Script Linux recomendado Copiar fotos da Canon S1X IS
   Script Linux recomendado Formatar disquetes msdos & ext2.
   Script Linux recomendado Proxy teste
   Script Linux recomendado Abrir e redirecionar portas TCP em firewall iptables

Comentários
[1] Comentário enviado por trojahn em 02/07/2012 - 14:06h:

Ok, mas se você precisar voltar um backup de 2 dias atrás, por exemplo... Não teria que executar as SQLs do log binário "ao contrário"??

Como você faz em um caso destes?


[2] Comentário enviado por fernandohallberg em 04/07/2012 - 08:50h:


[1] Comentário enviado por trojahn em 02/07/2012 - 14:06h:

Ok, mas se você precisar voltar um backup de 2 dias atrás, por exemplo... Não teria que executar as SQLs do log binário "ao contrário"??

Como você faz em um caso destes?


Neste caso, você volta o último backup full, e executa os logs binários até o ponto que você quiser de dois dias atrás... inclusive você pode voltar em um ponto exato do tempo...



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.