Automatizando o processo de backup do MySQL

Publicado por Fábio Berbert de Paula em 12/11/2002

[ Hits: 57.677 ]

Blog: https://fabio.automatizando.dev

 


Automatizando o processo de backup do MySQL



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:

$ mysqldump -h localhost -u armenio -pjujuba meuBanco > backup_meuBanco.sql

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.

Atenciosamente,
Fábio Berbert de Paula

Outras dicas deste autor

Configurando um drive de CD-RW com interface IDE

Preparando seu GNU/Linux para o horário de verão 2011/2012

Como desabilitar ou remapear um botão físico do teu smartphone

Vim com Tema de Cores do Visual Studio Code

Exim - Removendo todas as mensagens da fila de espera (spool)

Leitura recomendada

Tabelas corrompidas no MySQL

Resetar senha de root perdida no MySQL no CentOS e Red Hat

Backup de banco de dados MySQL com mysqldump

Instalação do MySQL via atualização de repositório

Chive - Alternativa ao phpMyAdmin

  

Comentários
[1] Comentário enviado por lamss em 26/06/2004 - 19:04h

Oi, gostei de sua dica pois estava a procurar na net sobre como fazer um backup simples e eficiente... mas...

Só para uma pequena correção pois deu erro... na execução...

mysqldump -h $HOST -u $USER -p$PASSWORD $DATABASE > $NOME

valeu mutcho louco...

[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"

mysqldump --opt $DB > $NOME

[3] Comentário enviado por fabio em 01/09/2004 - 23:56h

Ué, seu MySQL roda sem senha? Tá acessando MySQL como root e sem senha meu colega!?!??????????????

kkkkkkkkkkkkkkk

[4] Comentário enviado por filype em 24/11/2005 - 08:57h

muito bom fábio...

Aqui só deu um problema com a data

[5] Comentário enviado por sapiras em 12/12/2005 - 16:07h

Na seguinte linha: DATA=`/bin/date +%d-%m-%Y

Qual o significado de DATA?

[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

[7] Comentário enviado por balani em 15/07/2007 - 17:37h

Simples e eficaz

[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..

[9] Comentário enviado por brunorojo em 05/05/2008 - 16:09h

... Resolvido.

[10] Comentário enviado por brunorojo em 08/05/2008 - 19:41h

Vale lembrar que devem colocar o script na pasta do usuário, acredito q todos sejam padrão "/root/"

Quebrei q cabeça para descobrir isso.

[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

[12] Comentário enviado por ronneesley em 21/03/2009 - 23:17h

Script para backup do MySQL e PostgresSQL URL: www.analistasi.com.br ou direto http://analistasi.com.br/?p=49

[13] Comentário enviado por natanaeltp em 23/04/2009 - 18:32h

Legal
Tem alguns detalhes que você esqueceu, o $DATABASE na linha de comando mysqldump
mysqldump -h $USER -u $USER -p$PASSWORD $DATABASE > $NOME

Valew.......

[14] Comentário enviado por lulled em 30/04/2010 - 11:51h

Mesmo após todos esses anos que este artigo foi escrito, ainda me ajudou hoje! Valeu :D

[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.

Abraço



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts