Bom, amigos, nesta segunda parte do tutorial sobre backup de sites iremos aprender a configurar um completo sistema que executará backups diários e automáticos de suas bases de dados MySQL, o qual será parte integrante do “sistema de backup” que estamos montando, e tão importante quanto o backup de seus arquivos e pastas.
Se você possui um website dinâmico, que faz uso de bancos de dados MySQL, deve incluir a cópia destes em sua rotina diária de backups, pois tais bases de dados são tão importantes quanto as pastas e arquivos do site. Muitas vezes, dependendo da freqüência e do modo como seu website é atualizado, a cópia de segurança de suas bases de dados deve ser feita mais freqüentemente até do que a cópia de suas pastas e arquivos.
Na primeira parte deste tutorial configuramos um script para a execução de backups automáticos e também diários de todos os arquivos e pastas de seu site. Se você ainda não deu uma conferida na primeira parte do tutorial, sugiro que a leia antes de prosseguir com a leitura desta segunda parte. Para isto, utilize este link.
Se tudo correu bem, hoje você deve ter recebido o primeiro e-mail de confirmação, lhe avisando que o backup foi realizado com sucesso. Caso não tenha recebido o e-mail, ou o backup não tenha sido realizado, tente verificar novamente todos os procedimentos, e caso mesmo assim não consiga detectar onde está o problema, deixe um comentário que tentarei lhe ajudar.
Sobre os scripts utilizados
Da mesma forma que na primeira parte deste tutorial, utilizaremos também aqui um dos excelentes scripts gratuitos disponibilizados no site “Tips and Scripts“, também com a autorização do desenvolvedor e responsável pelo site. Vale ressaltar que os scripts são totalmente gratuitos, e a autorização a que me refiro é apenas para a utilização dos mesmos neste tutorial, aqui no Open2Tech.
O script que utilizaremos agora será o “Automated MySQL Backups“, para o backup das bases de dados MySQL. Vale lembrar mais uma vez os requisitos mínimos:
Mais uma vez, sugiro a utilização de servidores Linux e do painel de controle Cpanel.
Instalando e configurando – Criação da pasta destino
Vamos iniciar pela criação da pasta em seu FTP onde serão armazenados os backups dos bancos de dados MySQL, os quais serão gerados diariamente. Vale aqui a mesma recomendação feita na primeira parte deste tutorial, ou seja, para sua segurança, é imprescindível que esta “pasta destino” não faça parte da pasta webroot (public_html, por exemplo) de sua conta de hospedagem, de forma tal que os backups não sejam acessíveis via navegador, o que representaria uma grande falha e um enorme risco aos seus dados, que estariam então disponíveis para download por qualquer pessoa que porventura viesse a descobrir o “caminho”. Ou seja, a pasta destino deve ficar no mesmo nível da sua pasta webroot, e não estar localizada dentro da mesma.
Por exemplo, você não deve criar sua pasta destino “dentro” da pasta “public_html”. Deve, isto sim, criá-la no mesmo nível da public_html, e ao invés de possuir em seu FTP a seguinte estrutura:
/public_html/pastadestino2
Deve utilizar a seguinte:
/pastadestino2

Isto fará com que seus backups somente sejam acessíveis por você, via FTP ou então através do gerenciador de arquivos do seu painel de controle. Portanto, agora que você já sabe “onde” e “como” deve criar a pasta onde serão armazenados os backups diários de seus bancos de dados, crie-a com o nome que achar conveniente (pastadestino2 é apenas um exemplo, ok?
).
Para criar a pasta, você pode utilizar um cliente FTP qualquer, e minha recomendação aqui vai para o excelente e opensource Filezilla.
Instalando e configurando – Download e configuração do script
Após a criação da pasta destino, efetue o download do script “Automated MySQL Backups” através deste link. Após o download, renomeie o arquivo “sql_backups.txt” baixado para sql_backups.php, abra-o com um editor de textos qualquer (recomendo o freeware PSPad) e altere as seguintes linhas:
$emailaddress = “XXXXXX@yourdomain.com”;
Substitua o XXXXXX@yourdomain.com acima pelo seu e-mail.
$host=”XXXXXX”; // database host
Substitua o XXXXXX acima pelo host do banco de dados. Na maioria dos casos será “localhost“. Entretanto, caso tenha dúvidas, entre em contato com sua empresa de hospedagem.
$dbuser=”XXXXXX”; // database user name
Substitua o XXXXXX acima pelo usuário com acesso à sua base de dados.
$dbpswd=”XXXXXX”; // database password
Substitua o XXXXXX acima pela senha do banco de dados, ou seja, a senha utilizada pelo usuário com acesso à sua base de dados.
$mysqldb=”XXXXXX”; // name of database
Substitua o XXXXXX acima pelo nome do banco de dados.
$path = “/full_server_path_to_file_goes_here”;
Substitua o /full_server_path_to_file_goes_here acima pelo caminho completo para a pasta no servidor onde serão armazenados os backups dos bancos de dados. Por exemplo, caso você tenha criado, conforme instruções anteriores, uma pasta destino para seus backups no mesmo nível de sua pasta webroot e com o nome de “pastadestino2″, o caminho acima ficará exatamente assim:
/home/seuusuario/pastadestino2
No exemplo acima, “seuusuario” deve ser substituído pelo usuário com o qual você faz login em sua conta de hospedagem.
OBS: nas duas linhas acima, lembre-se de substituir somente os dados que estão entre parênteses, e no caminho, não finalize com barras (/). Deixe exatamente conforme demonstrado no exemplo.
Estas são as configurações básicas para que o script funcione. Quando executado, ele enviará uma mensagem de confirmação para o e-mail que você definiu em “$emailaddress”, e armazenará o backup na pasta definida em “$path”. Existem algumas mensagens que constarão no e-mail enviado que podem ser traduzidas, caso você deseje.
Basta efetuar as substituições abaixo, lembrando sempre de que devem ser substituídos somente os trechos que se encontram entre parênteses:
Substitua:
$message = “The database backup for ” . $mysqldb . ” has been run.\n\n”;
$message .= “The return code was: ” . $result . “\n\n”;
$message .= “The file path is: ” . $filename . “\n\n”;
$message .= “Size of the backup: ” . $size . “\n\n”;
$message .= “Server time of the backup: ” . date(” F d h:ia”) . “\n\n”;
Por:
$message = “O backup da base de dados ” . $mysqldb . ” foi executado.\n\n”;
$message .= “O código retornado foi: ” . $result . “\n\n”;
$message .= “O caminho para o arquivo backup é: ” . $filename . “\n\n”;
$message .= “Tamanho do backup: ” . $size . “\n\n”;
$message .= “Data e hora no servidor ao término do backup: ” . date(” F d h:ia”) . “\n\n”;
É claro que você pode customizar as mensagens conforme bem desejar, seguindo o exemplo acima. Lembre-se porém de somente alterar o que está em negrito, mantendo todo o resto intacto. Além disso, você pode substituir o “assunto” e o “remetente padrão” do e-mail de aviso.
Para isto, basta substituir:
mail($emailaddress, “Database Backup Message” , $message, “From: Website <>”);
Por:
mail($emailaddress, “Backup das bases de dados realizado” , $message, “From: Nome do seu site <>”);
Também aqui, altere somente o que está em negrito. Feitas as alterações acima, salve o arquivo sql_backups.php.
Instalando e configurando – Upload do script
Em seguida, crie uma pasta em seu FTP, agora dentro de sua pasta public_html (webroot), utilizando um nome bem atípico, como por exemplo “site_bk08yws_bds”. Após a criação desta pasta, efetue o upload do script já configurado (arquivo sql_backups.php) para a mesma e teste-o, acessando-o através de seu navegador.
Instalando e configurando – Testando o funcionamento do script
Por exemplo, supondo-se que você tenha criado uma pasta com o nome sugerido acima, você deve acessar o seguinte endereço em seu navegador, substituindo “meudominio.tld” pelo endereço de seu site:
http://www.meudominio.tld/site_bk08yws_bds/sql_backups.php
Uma tela em branco será exibida e você deverá receber dentro de poucos segundos o e-mail de confirmação. O backup deverá ter sido gerado após o acesso, na pasta que você escolheu, e você deve confirmar tal geração acessando seu FTP e verificando o conteúdo da sua “pasta destino”.
Instalando e configurando – Automatizando a execução do script
Tudo dando certo até aqui, vamos agora configurar a cron job para automatizar a execução do script. O acesso ao agendamento de tarefas pode variar conforme o painel de controle utilizado. Entretanto, trata-se de uma opção muito comum, e caso você não consiga encontrá-la, basta entrar em contato com sua empresa de hospedagem.
Alguns painéis de controle oferecem um agendador de tarefas mais “visual”, onde é possível a escolha das diversas opções através de menus dropdown, por exemplo. Entretanto, o mais comum é a existência de um painel simples e muito mais prático. O agendamento pode ser feito também via SSH, mas este é um procedimento mais complicado, e como nem todas as empresas de hospedagem oferecem acesso SSH para contas de hospedagem em regime compartilhado, não vou citá-lo aqui.
No Cpanel, o acesso ao agendamento de tarefas se dá através do caminho “Advanced ==> Cron jobs” (ou “Avançado ==> Agendador de tarefas”).

Basicamente, o que você precisa é definir a “periodicidade” com que o script vai ser executado, e também o “comando” a ser executado, o qual na verdade é a URL de acesso ao script de backup. Como iremos configurar para que a execução do script seja diária, a configuração é bem simples, e basta configurar sua cron job conforme imagem abaixo:

A tela acima provavelmente é muito semelhante à que você encontrará no painel de controle de sua conta de hospedagem. Basicamente, definimos os seguintes valores, para executar o script todos os dias, às 02:00 horas da manhã:
0 2 * * * GET URL de acesso ao script
Cada um dos 06 (seis) campos corresponde às informações abaixo:
Minute: minuto de execução.
Hour: hora de execução.
Day: dia. O asterisco (*) significa que o script será automaticamente executado todos os dias.
Month: mês. O asterisco (*) significa que o script será automaticamente executado em todos os meses.
Weekday: dia da semana. O asterisco (*) significa que o script será automaticamente executado em todos os dias da semana
Command: o comando que será executado. Neste campo, você deverá digitar a URL completa para o script, conforme vimos acima. Note que antes da URL você deve utilizar o comando GET, seguido de um espaço.
OBS: caso encontre algum problema neste ponto, entre em contato com sua empresa de hospedagem, a qual poderá lhe auxiliar melhor quanto ao uso do GET ou não.
Para finalizar, salve as alterações.
Sobre o consumo de recursos no servidor
Observe que este script pode causar problemas ao seu servidor, dependendo de seu volume de dados e da carga na máquina, no momento da execução. Por este motivo, é sempre importante configurar sua execução para períodos mais “tranqüilos”, como a madrugada, por exemplo.
No exemplo acima definimos a execução para as 02:00 da madrugada, mas você pode definir qualquer outro horário. Vale lembrar, também, que você deve levar em consideração o “horário definido no servidor“, ou seja, o fuso horário do país onde o servidor se encontra, e então efetuar as correções necessárias.
Utilizando o script
Após todos os procedimentos descritos acima, você terá em seu site um completo e poderoso sistema que executará backups diários do banco de dados definido no script. Os backups serão gerados na pasta destino que você definiu, com a seguinte “estrutura” de nomes:
backupDAY.sql
Onde DAY será sempre substituído pelo dia do mês (exemplo, backup11.sql), o que significa que cada backup gerado terá um “tempo de vida” de mais ou menos 30 dias, pois, por exemplo, um arquivo de backup gerado hoje (11/06/2008) terá o nome de backup11.sql, e no próximo mês, no mesmo dia (11/07/2008), este será sobreposto pelo novo arquivo gerado. E assim por diante. Além disso, você receberá automaticamente em seu e-mail os avisos ref. à geração dos backups, tão logo estes sejam finalizados.
Finalizando
Com o script Automated MySQL Backups e as configurações acima, você obterá backups diários do banco de dados escolhido. Não se esqueça de efetuar download com freqüência dos arquivos .sql gerados. Aliás, recomendo que você efetue downloads diários dos mesmos.
Através dos procedimentos informados nesta segunda parte do tutorial e também na primeira parte, é possível criar um sistema automatizado de backups, que copiará diariamente os arquivos e pastas de seu site e também o banco de dados que você utiliza no mesmo.
Opções adicionais
Na próxima e última parte do tutorial iremos conferir algumas opções adicionais deste script. É possível, por exemplo, ao invés de utilizar o script para copiar apenas um banco de dados, conforme descrito acima (sendo necessária neste caso a utilização de um script diferente e uma tarefa agendada para cada banco de dados), configurá-lo para que sejam copiados ao mesmo tempo todos os bancos de dados que você possuir em sua conta.
Além disso, é possível também a compactação dos backups (tar.gz). Mas estas funcionalidades iremos conferir na terceira e última parte deste tutorial. Aguarde.
Informações adicionais
Site do desenvolvedor dos scripts utilizados:
Link para download do script para backup de bancos de dados MySQL:
http://tips-scripts.com/sql_backups.txt
Página do script:
Leia também os seguintes artigos relacionados:
Related posts brought to you by Yet Another Related Posts Plugin.