Script de backup MySQL [melhorado]

Publicado por Jeferson R. Costa (última atualização em 19/04/2017)

[ Hits: 25.827 ]

Homepage: http://www.jefersonrc.com.br/

Download backup_sql.sh

Download 1490910669.backup_sql.sh (versão 2)




Na postagem anterior compartilhei um script que utilizada para backup de uma das minha base de dados, porém resolvi dar uma melhorada nele, pois tive alguns problemas com o restaure de backup gerados por aquele script. Tentei deixar o script mais dinâmico e com melhores combinações de parâmetros. Basicamente o script gera um arquivo .sql com combinações de INSERTs para que tanto o backup quanto o restaure fique mais rápido e o backup é feito com consistência para que não haja problemas posteriormente.

Obs.: para que o script funcione na parte da compactação bz2 é necessário instalar o pacote bzip2.

  



Versões atualizadas deste script

Versão 2 - Enviado por Matheus TSA em 30/03/2017

Changelog: Encontrei exatamente o que eu precisava tanto no código quanto nos comentários, por isso resolvi juntar tudo.

Download 1490910669.backup_sql.sh


Esconder código-fonte

#!/bin/bash

#################### SCRIPT PARA BACKUP MYSQL ####################
# Jeferson R. Costa <rc.jeferson@gmail.com>                      #
# Created Feb, 2013                                              #
# Update Feb, 2013                                               #

# Definindo parametros do MySQL
echo "  -- Definindo parametros do MySQL ..."
DB_NAME='dbname'
DB_USER='dbuser'
DB_PASS='dbpass'
DB_PARAM='--add-drop-table --add-locks --extended-insert --single-transaction -quick'

# Definindo parametros do sistema
echo "  -- Definindo parametros do sistema ..."
DATE=`date +%Y-%m-%d`
MYSQLDUMP=/usr/bin/mysqldump
BACKUP_DIR=/backup/mysql
BACKUP_NAME=mysql-$DATE.sql
BACKUP_TAR=mysql-$DATE.tar

#Gerando arquivo sql
echo "  -- Gerando Backup da base de dados $DB_NAME em $BACKUP_DIR/$BACKUP_NAME ..."
$MYSQLDUMP $DB_NAME $DB_PARAM -u $DB_USER -p$DB_PASS > $BACKUP_DIR/$BACKUP_NAME

# Compactando arquivo em tar
echo "  -- Compactando arquivo em tar ..."
tar -cf $BACKUP_DIR/$BACKUP_TAR -C $BACKUP_DIR $BACKUP_NAME

# Compactando arquivo em bzip2
echo "  -- Compactando arquivo em bzip2 ..."
bzip2 $BACKUP_DIR/$BACKUP_TAR

# Excluindo arquivos desnecessarios
echo "  -- Excluindo arquivos desnecessarios ..."
rm -rf $BACKUP_DIR/$BACKUP_NAME

Scripts recomendados

OpenVZ - vzbackup

Backup de partiçoes remotas

Backup Ubiquiti com usuários e senhas SSH diferentes

Backup de logs do sistema

Backup com mysqldump


  

Comentários
[1] Comentário enviado por rriscado em 20/03/2013 - 14:38h

Amigo, Somente contribuindo....

Ao fazer o tar, vc pode incluir o parâmetro "j" que ja cria o tar com bzip2, isso exclui a necessidade de rodar o comando "bzip2" posteriormente.
Também pode inserir ao final do comando o parâmetro "--remove-files", que exclui os arquivos de origem e torna desnecessário o comando "rm -rf" posteriormente.
A linha ficaria assim: tar -cjf $BACKUP_DIR/$BACKUP_TAR -C $BACKUP_DIR $BACKUP_NAME --remove-files

Dúvidas consultar manual do tar com o comando "$man tar".

O restante do script está show!!!!

Abraço
Raphael Riscado

[2] Comentário enviado por rcjeferson em 20/03/2013 - 17:28h

Obrigado pela contribuição amigo... Vivendo e aprendendo...

[3] Comentário enviado por claudsan em 23/07/2013 - 16:10h

Show de bola!

[4] Comentário enviado por daniii10 em 10/09/2013 - 09:30h

Ola

Quais as partes do script que devo alterar para atender a minha base??

echo " -- Definindo parametros do MySQL ..."
DB_NAME='dbname'
DB_USER='dbuser'
DB_PASS='dbpass'
necessito alterar esta?

[5] Comentário enviado por rcjeferson em 10/09/2013 - 19:19h


[4] Comentário enviado por daniii10 em 10/09/2013 - 09:30h:

Ola

Quais as partes do script que devo alterar para atender a minha base??

echo " -- Definindo parametros do MySQL ..."
DB_NAME='dbname'
DB_USER='dbuser'
DB_PASS='dbpass'
necessito alterar esta?


Todos os parâmetros de MySQL e Sistema você deve alterar para que funcione corretamente. Lembrando que os parâmetros do sistema, pode ser que funcione da maneira que está, tendo que alterar somente se os diretórios dos arquivos forem diferentes no seu sistema. O parâmetro que deve se atentar é o diretório onde o backup será feito (BACKUP_DIR) para que fique no diretório que melhor se adequar ao seu sistema.

Qualquer coisa posta ai!

[6] Comentário enviado por joorlando3 em 20/04/2016 - 13:13h

Bom dia!

Obrigado, seu script me ajudou muito.


[7] Comentário enviado por vanbloc em 19/12/2016 - 16:41h

Muito bom!!!
No meu caso também adicionei as linhas abaixo para ele deletar os backups mais antigos (30 dias):

# Excluindo backups antigos
echo " -- Excluindo backups com mais de 30 dias ..."
find $BACKUP_DIR/* -mtime +30 -delete

[8] Comentário enviado por glmstz em 04/08/2017 - 10:20h

TOP, parabéns a todos...

Obrigado!

Att.,
Gustavo L. Moraes


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts