quinta-feira, 20 de maio de 2010

Shell script - backup de seus bancos de dados Mysql em servidores remotos

Utilize o usuário root para o procedimento abaixo ou crie um usuário backup com uma senha forte, pois, iremos colocar senhas de BDs nos arquivos shell script, logo, por motivo de segurança é aconselhado realizar esta estratégia.

1 - Crie a seguinte estrutura de pastas no seu unix-like(Substitua o diretório sistema_mapas pelo o nome do seu sistema que deseja realizar o back-up):
# mkdir -p /backups_BDs_mysql/sistema_mapas/bkps

--->Somente o usuário root ou backup terá acesso ao conjunto de pastas por motivos de segurança, , então der o comando chmod -r:
# chmod -R 700 /backups_BDs_mysql/sistema_mapas/bkps

2 -Após isto, crie o seguinte arquivo shell script em /backups_BDs_mysql/sistema_mapas/:
# touch /backups_BDs_mysql/sistema_mapas/bkp_bd_mapas.sh

# chmod 755 /backups_BDs_mysql/sistema_mapas/bkp_bd_mapas.sh

# vi /backups_BDs_mysql/sistema_mapas/bkp_bd_mapas.sh

---> Insira o conteúdo abaixo no shell script:

#!/bin/bash

# Bkp banco mysql
# Por Leonardo Couto Conrado
# Em 19.10.2009

now=$(date +%Y%m%d)
clockNow=$(date +%d.%m.%Y-%H:%M)
nomeFile=$now.mapas.sql
pathBkp="/backups_BDs_mysql/sistema_mapas"

`mysqldump -u usuarioComAcessoAoBanco -psenhaDoBanco -h nomeOuIPDoServidorDeBanco --databases nomeDoBanco > $pathBkpMapas/bkps/$nomeFile`
`tar --absolute-names -czf $pathBkp/bkps/$nomeFile.tar.gz $pathBkpMapas/bkps/$nomeFile`
`rm -f $pathBkp/bkps/$nomeFile`

if [ $? -ne 0 ];
then
echo "$clockNow - $0, possiveis erros na linha acima ^" >>  /var/log/backups_BDs_mysql.log
else
echo "$clockNow - $0, possiveis erros na linha acima ^" >>  /var/log/backups_BDs_mysql.log
fi


3 - Crie os arquivos de log em /var/log/:
# touch /var/log/backups_BDs_mysql.log

4 - Teste executando o shell script:
# /backups_BDs_mysql/sistema_mapas/bkp_bd_mapas.sh

---> Se estiver tudo ok será gerado com arquivo tallbar comprimido(tar.gz) em /backups_BDs_mysql/sistema_mapas/bkps/ com o backup do banco, caso contrário verifique o problema provavelmente usuário, senha, nome do banco inserido incorreto no script...

5 - Para ser executado todos os dias coloque a tarefa agenda no cron, aqui no trabalho rodo o backup todos dias às 23:58 da noite:
# crontab -e -u root

---> Insira a linha abaixo para programar o backup:
58 23 * * * sh /backups_BDs_mysql/sistema_mapas/bkp_bd_mapas.sh 2>> /var/log/backups_BDs_mysql.log

---> Salve e saia do crontab

Pronto! Você pode utilizar este esquema de backup para outros sistemas no seu ambiente, este foi o exemplo para um único sistema aqui onde trabalho, agora só depende da sua criatividade!

Nenhum comentário:

Postar um comentário

Seguidores