Caminho de Navegação Mysql / Artigos / Backup automático em MySQL

Mysql

 

Nenhuma avalição
Indique ao Ueba Indique ao BlogBlogs Indique ao Delicious Indique ao Technorati Indique ao Google Bookmarks Indique ao Newsgator
TAGS

Nenhuma tag foi definida ainda!

Defina as tags para esta página preenchendo o campo abaixo.

  • Máximo de 100 tags
  • Cada tag deve ter até 20 caracteres.
  • Separar as tags com virgula. Ex.: php, sql, html, xml, fireworks
COMENTAR

INDICAR
Nome do amigo: E-mail do amigo: Comentário:
REPORTAR ERRO Descreva o erro:

Backup automático em MySQLPostada em: 17/08/2004

Otavio James Bernardes Junior
Por: Otavio James Bernardes Junior Nº de Visualizações: 4069.



Notícia do dia: 07 de Mar de 2004
17h32min » Backup automático em MySQL



Fiz um pequeno sistema que faz backup do banco de dados do site Notícias Linux que envia para um ftp diariamente. O sistema foi feito para que ele crie 7 cópias, uma a cada dia da semana, evitando que se ocorrer algum problema ele envie um backup vazio e substitua a última cópia.

Escrevi os passos de como foi feito pois pode ser útil para quem possui sites ou sistemas em MySQL e não possui backups. Os passos abaixo podem ser usados para qualquer tipo de dados, não precisa necessariamente ser usado apenas para cópia de MySQL, um sistema parecido fazia o mesmo quando o site Notícias Linux era em Perl com banco de dados em um arquivo .txt.

Primeiro precisamos fazer uma cópia dos dados e para isso usei o mysqldump que é um aplicativo que vem junto com o MySQL. Logo depois faço com que o sistema zipe o arquivo .sql criado, deleto o .sql e envio por ftp para um outro servidor usando o ncftp.

Coloquei todos os comandos em um script shell e adicionei no cron para executar uma vez por dia.


Veja o script abaixo:


#!/bin/bash
DATA=`DATE | cut -d" " -f1`
/usr/BIN/mysqldump --databases nomebancodedados --quote-names -hhosting.com.br -ulogin -psenha > /home/usuario/backup/backup.sql
/usr/BIN/zip -r /home/usuario/backupb/backup-$DATA.zip /home/usuario/backup/backup.sql
/BIN/rm -f /home/usuario/backup/backup.sql
/usr/BIN/ncftpput -u'loginftp' -p'senhaftp' 'ftp.outroservidor.com' diretorionooutroservidor/ /home/usuarion/backup/backup-$DATA.zip
/BIN/rm -f /home/usuarion/backup/backup-$DATA.zip
 



A primeira linha cria o arquivo .sql e você deve substituir o "nomebancodedados" para o nome do seu e ao lado de -h, -u e -p você deve colocar o endereço, login e senha de conexao ao MySQL.
Note que eu coloquei os caminhos completos dos aplicativos e dos diretórios onde os arquivos vão ser gravados, isso é importante já que o script vai rodar no cron.

Após as alterações necessárias salve o arquivo com o nome de 'backup' e dê permissão para execução com o chmod +x backup.
Agora acrescente uma linha no seu cron para que ele execute esse script 1 vez ao dia.

Para acrescentar a linha no cron siga os passos abaixo:
export EDITOR=mcedit ou export VISUAL=mcedit (em algumas distribuições linux eu usa a variável EDITOR mas no Slackware eu uso a variável VISUAL. Substitua mcedit pelo seu editor prefererido).

Digite crontab -e e digite a linha abaixo:


00 5 * * * /home/usuario/backup/backup 2>&1> /dev/NULL
 



Agora todos os dias as 5 da manhã o script será executado.



Dicas

- O aplicativo ncftpput faz parte do pacote ncftp e pelo que notei ele é comum em várias distribuições linux.

- Você pode usar o parâmetro -e caso seu zip suporte encriptação, isso dará maior segurança para as cópias dos seus dados.

- Se um dia você precisar recuperar o mysql com seu backup, descompacte o arquivo de backup faça assim:
mysql -uusuario -psenha -hhosting < backup.sql
Otavio James Bernardes Junior
Enviado por Otavio James Bernardes Junior em 27 de maio de 2008 Desculpe o incômodo amigo, mas teria uma dica sobre backup automêtico pelo windows também, é que estou na mão com um cliente. GRATO

USUÁRIO REMOVIDO
Enviado por USUÁRIO REMOVIDO em 4 de maio de 2005 Otávio parabéns pelo seu artigo! mas me diz uma coisa tem como gerar um script paracido mas em PHP? (Desculpe a ignorância mas sou iniciante em programação PHP e MySQL)