Backup do MySQL no Linux

Bom pessoal , vou neste post demonstrar a utilização de um script no qual criei para efetuar rotinas de backups com Banco de dados MySQL. Essa rotina trata o conceito de backup diário efetuado de 6 em 6 horas totalizando em 4 backups diários. Também utilizamos o conceito do backup semanal sendo executado toda Sexta-feira as 22:00 horas , 4 vezes em um mês. Por ultimo a Rotina de backup mensal na qual é efetuado todo dia 1 de cada mês as 03:00 da manhã. Por padrão o Script foi feito para efetuar backup de somente duas bases do MySQL , mais pode ser ampliada copiando partes do Script para atender sua necessidade. O Script também foi feito para enviar o log de execução do backup por e-mail, nisso mais abaixo , veja como instalar e configurar este cliente de e-mail no linux.

Bom o mesmo Script é utilizado nas três rotinas , porém tenho um para cada rotina pois cada rotina de backup (diário, semanal, mensal) é configurada de uma maneira. Nisso depois de configuramos os diretórios que os scripts irão utilizar para gravar os backups e definirmos as bases de dados que iremos efetuar o backup, necessitaremos configurar o usuário que efetuará o backup.

Pré requisitos para que os Scripts funcionem.
É necessário criar a estrutura de diretórios para armazenar os backups , no caso escolhi por criar a estrutura dentro do diretório /home , conforme imagem abaixo:

Também necessário criar em cada pasta que irá armazenar o backup um arquivo que servirá como contador para armazenar nossos backups, veja na imagem abaixo:

Obs: é altamente recomendável criar um usuário para efetuar a execução do backup , pois não é uma boa prática utilizar o usuário “root” para executar está rotina, devido o script deixar a senha gravada no mesmo.

O Agendamento do Backup será efetuado utilizando o CRON do Linux.

Segue abaixo as configurações do CRON para backup diário:
####### Cron Backup Diario ################
0     00,06,12,18       *       *       *       root    /usr/local/sbin/bkp_mysql_diario.sh

Segue abaixo as configurações do CRON para backup semanal:
####### Cron Backup Semanal ################
0     22       *       *       5       root    /usr/local/sbin/bkp_mysql_semanal.sh

Segue abaixo as configurações do CRON para backup mensal:
####### Cron Backup Mensal ################
0     03       1       *       *       root    /usr/local/sbin/bkp_mysql_mensal.sh

Download dos Scripts de backup:
http://sdrv.ms/Pxfrbr
Download da Configuração de E-mail:
http://sdrv.ms/Pk1cst
Para configurar o e-mail veja o post abaixo:
http://blog.gaudencio.net.br/2012/04/enviando-emails-com-anexo-via-linha-de.html

Bom deixei duas opções para os scripts utilizando algoritmos de compressão de dados diferentes. Um utiliza o algoritmo de compressão G-Zip padrão no Linux , já o outro script utiliza o algoritmo 7-Zip que precisa ser instalado no seu servidor Linux. Os Backups utilizando G-Zip executaram mais rapidamente tendo uma taxa de compressão aceitável. Já o 7-Zip teve uma taxa de compressão muito melhor , mais o tempo de execução demorou 7 vezes mais que o G-Zip.

Instalando 7-zip no Debian/Ubuntu:
# apt-get install p7zip-full

Instalando SSMTP no Debian/Ubuntu:
# apt-get install ssmtp

Criando usuário no MySQL para executar os backups:
mysql> GRANT FILE, SELECT, SHOW VIEW, LOCK TABLES, RELOAD, REPLICATION CLIENT, EVENT, TRIGGER, USAGE ON *.* TO ‘backup_user’@’localhost’ IDENTIFIED BY ‘teste’;

Bom Pessoal , agora é só utilizar os Scripts conforme sua necessidade , Caso precisem de alguma ajuda para efetuar ajustes nos Scripts estarei a disposição para ajuda-los. Que a Graça e Paz estejam com vocês.

Fonte: http://blog.gaudencio.net.br/2012/09/backup-do-mysql-no-linux.html