Nessa dica vamos ver como realizar um backup de um banco de dados do MySQLe como automatizar este processo de backup. Vamos partir do princípio que temos um banco de dados chamado meuBanco, na máquina localhostque é acessado pelo usuário armenio com senha jujuba.
Então vamos resumir as informações de nosso exemplo:
Database: meuBanco
Host: localhost
Username: armenio
Password: jujuba
O programa responsável pela realização de backup do MySQL é o mysqldump,que já vem distribuído junto com o banco de dados. O mysqldump gera um arquivo com comandos SQL que cria o esquema das tabelas de seu banco de dados e restauram os registros das tabelas. Vamos iniciar com um exemplo prático de como fazer um backup completo de nosso banco de dados:
Bem simples não, no comando acima podemos perceber claramente que foi gerado um backup de nosso banco no arquivo backup_meuBanco.sql. O mysqldump possui diversas opções para realização de backup personalizado. Você pode configurá-lo para fazer cópia apenas das estruturas das tabelas, apenas os registros, escolher o tipo de sintaxe dos comandos SQL e afins. Digite "man mysqldump" para maiores informações.
Agora que aprendemos a fazer cópia de nosso banco de dados, vamos aprender a automatizar o processo de backup. Criaremos um simples script para realizaro backup e nomear as cópias nomeadas com a data atual.
#!/bin/sh
# mysqlBackup.sh
DATA=`/bin/date +%Y%m%d`
# NOME armazena o nome do arquivo de backup, neste casoi
# o diretório é /home/fabio/backup, configure aqui o seu
# diretório de backup
NOME="/home/fabio/backup/meuBanco-$DATA.sql"
# variáveis do MySQL
HOST="localhost"
USER="armenio"
PASSWORD="jujuba"
DATABASE="meuBanco"
mysqldump -h $HOST -u $USER -p$PASSWORD > $NOME
Uma vez criado o script mysqlBackup.sh, vamos agendar sua execução diária no cron. Neste exemplo quero que o script seja executado todos os dias às duas da manhã. Digite:
crontab -e
E adicione a linha:
0 2 * * * /bin/sh /home/fabio/mysqlBackup.sh
Restaurar um backup é simples, basta você acessar o shell do MySQL e colar o conteúdo do arquivo gerado. Uma das formas de se restaurar um backup é a seguinte:
mysql -h localhost -u armenio -pjujuba meuBanco < meuBanco-20020924.sql
Onde meuBanco-20020924.sql é o arquivo com os comandos SQL.
[2] Comentário enviado por eduengler em 01/09/2004 - 23:53h
não concordo com o colega..
testei o script e nada de BKP
este que disponho abaixo, fiz e é eficaz, dispõe comandos disposto dentro do man mysqldump
............................................
#!/bin/sh
# mysqlBackup.sh
DATA=`/bin/date +%d-%m-%Y`
# NOME armazena o nome do arquivo de backup.
# o diretório é /home/kurumin/mysql/backup, configure o seu.
NOME="/home/kurumin/mysql/backup/bkptest-$DATA.sql"
#DB é o nome do banco de dados, use o seu.
DB="test"
[6] Comentário enviado por higorcista em 14/06/2006 - 14:15h
DATA?!bom pelo oq eu entendi essa variavél DATA irá acrecentar no nome do arquivo a data atual q esta dentro do (arquivo/comando/diretório) /bin/date, e a data acrescenta no nome do arquivo saira na ondem de + %d dia, %m mês e %Y ano...espero q eu tenha interpretado certo!!rs
[8] Comentário enviado por eduardompozzi em 12/11/2007 - 11:29h
?comentario= Na verdade a data vai sair como Ano Mes e Dia que é o padrão do MySQL mesmo.. Só que como no linux isso tem que ser configurado vc mesmo coloca a bagaça.. xD..
De resto é o que o higorcista falou mesmo..
[11] Comentário enviado por vinper em 10/07/2008 - 13:54h
Muito bom! Estou procurando algum artigo como esse para fazer o mesmo procedimento no postgre. Alguém ja testou esse procedimento com o postgre, e sabe algum turorial para realizar tal tarefa?? uso a versao 8.3. sou novato em linux e na comunidade hehehee
valew moçada
[15] Comentário enviado por kamikaze_df em 17/10/2011 - 20:48h
Beleza, mas funciona só com bancos pequenos ...
Tenho uma base gigantesca aqui, quase 2TB, sendo que o pessoal consulta tipo até 21h e as 5 da manhã já tem rotina automatizada gerando e baixando arquivo para rodar scripts de atualização.
Não tem como usar este método em bases grandes, primeiro a questão do espaço (tinha que adicionar um tar, gzip, 7z ...), depois o tempo, não exporta os dados em tempo hábil, depois se ainda fosse rodar um compactador em cima, demoraria ainda mais.
A dica é boa, mas lembrem-se, bancos pequenos ... qualquer coisa acima de 300GB é bom ver outras alternativas.