Backup Agendado do MySQL

Aprenda a fazer um backup agendado do MySQL no Windows.

Nunca encontrei um programa decente para fazer backup agendado do MySQL, vários programas oferecem backup, mas não agendam.

Aí você me diz, o MySQL Administrator faz!

E eu digo, infelizmente o MySQL Administrator foi descontinuado, hoje a única GUI TOOL para o MySQL suportada oficialmente é o Workbench, e ele não faz backup agendado.

Mas isso não vai nos impedir certo?

Fiz um backup com o workbench, e percebi que ele usa outra ferramenta, de linha de comando, para fazer sua mágica. E essa ferramenta nos permitirá fazer nossos backups agendados.

Vamos nessa!

Tanto o MySQL como o MySQL Workbench veem com o executável que vamos utilizar, usei o do workbench porque, se precisar, vou fazer restore usando ele, então achei melhor para garantir compatibilidade.

Minha instalação do Workbench está em:

C:\Program Files (x86)\MySQL\MySQL Workbench 5.2 CE\

Nessa pasta procure pelo arquivo mysqldump.exe, velho conhecido de quem usa mysql há muitos anos…

Copie ele para o C:\ para facilitar o uso.

Agora podemos chamá-lo na linha de comando usando C:\mysqldump.exe isso garante que chamemos o do workbench, pois se chamarmos na linha de comando apenas mysqldump ele ativará o programa do diretório raiz da instalação do mysql que está nas variáveis de sistema… (system path)

Buenas, agora vamos entender como funciona.

Copiei os atributos padrão do workbench para criar um backup igual ao dele, ficou assim:

C:\mysqldump -h ip_do_servidor -u root --password=xxxxxx nome_base --result-file=caminho_do_arquivo_output.sql --add-locks --extended-insert --lock-tables --dump-date --disable-keys --tz-utc --comments --create-options --quote-names

Fiz o meu como root, mas nada impede de criar um usuário só para backup, com menos privilégios.

Rodando a linha de comando acima, o mysql dump fará um backup da base escolhida para o arquivo que você estipular no result-file. Tome cuidado com isso, pois se você não colocar um nome variável, os arquivos se substituirão!

Vou ensinar como fazer isso em um .bat. Não se assuste! Os arquivos .bat não são tão complexos de fazer e ajudam bastante no que vamos fazer.

Criei um arquivo de texto onde quiser e renomeie a extensão para .bat, clique com o botão direito, e em editar (ou edit).

No bloco de notas fazemos o seguinte, logo na primeira linha colocamos:

C:\mysqldump -h ip_do_servidor -u root --password=xxxxxx nome_base --result-file=caminho_do_arquivo_output.sql --add-locks --extended-insert --lock-tables --dump-date --disable-keys --tz-utc --comments --create-options --quote-names

Substitua o ip_do_servidor, o xxxxxx pela senha do usuário, nome_base pelo nome da base que deseja fazer backup.

Agora vem a jogada, no nome do result-file, vamos colocar o seguinte:

nomedabase + data + .sql

Para fazer isso temos que usar a variável de sistema DATE, para isso basta escrever %DATE%, mas precisamos trocas as barras da data por underscore, para isso usamos %DATE:/=_% , fácil assim!

Como exemplo, o meu ficou:

C:\mysqldump -h 10.20.30.40 -u root --password=xxxxxx repeatdomiau --result-file=C:\backups\repeat_%DATE:/=_%_.sql --add-locks --extended-insert --lock-tables --dump-date --disable-keys --tz-utc --comments --create-options --quote-names

Isso cria um dump (mesmo que backup) da base repeatdomiau, no servidor 10.20.30.40, usando usuário root e senha xxxxxxx para o arquivo repeat_11_15_2011.sql (a data muda com o dia).

Salve o seu .bat e está pronto!

Lembre-se, sempre que for editar o .bat clique com o direito e em editar, abrir faz o .bat rodar!

Agora só falta o agendamento no Windows, rode seu .bat antes para garantir que ele esteja funcionando antes de agendar.

No Windows o agendamento é fácil. Basta ir em Painel de Controle -> Ferramentas Administrativas -> Agendador de Tarefas.

Então clique em Criar Tarefa Básica para quem não tem muita experiência, ou Criar Tarefa para usuários avançados.

Na tarefa básica, dê um nome para sua tarefa, e clique em avançar.

Em Disparador, marque diariamente e avançar.

Troque a data do “iniciar” para amanhã e o horário para um em que a máquina esteja ligada e que não tenha muito uso no seu banco. Mantenha o “Repetir a Cada” em 1 dia. E avançar.

Em Ação, marque iniciar um programa e avançar.

Clique em procurar e selecione o seu arquivo .bat.

Então avançar e concluir.

Depois clique duas vezes na sua tarefa na lista de tarefas.

Nas propriedades, entre na aba configurações.

Marque a opção: “Permitir que a tarefa seja executada por demanda”

e a opção: “Executar a tarefa o mais cedo possível após uma inicialização agendada tiver sido perdida”.

Está pronto.

Para mais opções bacanas de parâmetros, que podem ser usados para rodar seu backup, consulte o seguinte link:

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

Espero que ajude vocês a fazer um backup agendado bacana para seus servidores!

This entry was posted in MySQL. Bookmark the permalink.

7 Responses to Backup Agendado do MySQL

  1. Renato Silva says:

    Vlw mesmo cara ajudou bastante.

  2. Marcio says:

    Hoje já existe o MySQL Installer, é o conjunto de ferramentas, que inclusive vem com o MySQL Admin. Realmente fiquei surpreso em ver as grandes melhoras que fizeram.

    http://dev.mysql.com/downloads

  3. LCSouza says:

    Muito boa sua dica! Estava mesmo a procura de algo assim. Só tenho uma dúvida: Tem como realizar um dump agendado de mais de uma base de dados em um único .bat?

  4. Cesar says:

    Amigo, acompanhei esta dica a muitos mêses atras, o meu back-up esta ok, não perco nada e tenho a opção de escolha entre varias datas que eu tenho armazenada.
    POREM, agora chegou a hora de usar a restauração destes dados, eu estou trocando de servidor.
    Pode nos apresentar qual é o processo para restaurar este arquivo backpeado.
    Pela interface do Workbench não consegui restaurar.
    grato

  5. Mauricio Lara says:

    Gabriel,

    Rodei o script que você indicou pelo prompt e deu tudo certo.
    Porém, quando eu transformei o mesmo em .bat já não tive o mesmo sucesso.
    Eu sei que estou errando, mas não sei onde.
    Abaixo envio o scrip. Caso você possa verificar onde estou errando te agradeço a força:

    E:\MySQL\MySQL Workbench 5.2 CE\mysqldump -h localhost –login –password=xxxxxxx byyoutst –result-file=E:\Backup\MySQL\WebDesk\Bkuptst.sql –add-locks –extended-insert –lock-tables –dump-date –disable-keys –tz-utc –comments –create-options –quote-names

    • Difícil dizer…

      Dê uma olhada nas coisa chatas do .bat, pode ter alguma coisa que você precisa mudar para caractere de escape ou algo assim.

      Meu chute é o famoso Caminho Com Espaços (MySQL Workbench 5.2 CE), tente colocar entre aspas… ou mudar para um caminho mais simples.

      Lembre-se que o CMD é velhinho… Na época que ele surgiu os caminhos não podiam ter espaços, depois ele passou a aceitar entre aspas.

      Um abraço!

  6. André says:

    Olá,

    Gostaria de começar agradecendo porque segui as instruções e funcionou muito bem, mas, na hora de restaurar só funcionou quando abri o script em uma query e executei pelo WorkBench, o normal é isso ? Se não qual o caminho correto para restaurar ?

    Um abraço

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>