Você esta em:Home » Desenvolvimento » Criação de backups de banco de dados MySQL automáticamente

Criação de backups de banco de dados MySQL automáticamente

Criação de backups de banco de dados MySQL automáticamente

Saiba como criar uma regra de backup para seus SGBDs de forma automática e controlada.

Cada banco de dados precisa ser backupiado, e se você está fazendo isso manualmente, você pode parar porque há uma solução simples, utilizando PHP. Com este script você poderá passar uma tabela específica para backup ou escolher fazer o backup do banco de dados inteiro. Show né?

Atenção! Nunca deixe esse script visível na web, ou seja, coloque-o abaixo da pasta public-html ou numa pasta protegida!

Script backup.php que gera o backup do Mysql

 <?php
 backup_database_tables('HOST','USERNAME','PASSWORD','DATABASE', '*');

// backup the db function
 function backup_database_tables($host,$user,$pass,$name,$tables)
 {

$link = mysql_connect($host,$user,$pass);
 mysql_select_db($name,$link);

//get all of the tables
 if($tables == '*')
 {
 $tables = array();
 $result = mysql_query('SHOW TABLES');
 while($row = mysql_fetch_row($result))
 {
 $tables[] = $row[0];
 }
 }
 else
 {
 $tables = is_array($tables) ? $tables : explode(',',$tables);
 }

//cycle through each table and format the data
 foreach($tables as $table)
 {
 $result = mysql_query('SELECT * FROM '.$table);
 $num_fields = mysql_num_fields($result);

$return.= 'DROP TABLE '.$table.';';
 $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
 $return.= "\n\n".$row2[1].";\n\n";

for ($i = 0; $i < $num_fields; $i++)
 {
 while($row = mysql_fetch_row($result))
 {
 $return.= 'INSERT INTO '.$table.' VALUES(';
 for($j=0; $j<$num_fields; $j++)
 {
 $row[$j] = addslashes($row[$j]);
 $row[$j] = ereg_replace("\n","\\n",$row[$j]);
 if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
 if ($j<($num_fields-1)) { $return.= ','; }
 }
 $return.= ");\n";
 }
 }
 $return.="\n\n\n";
 }

//save the file
 $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
 fwrite($handle,$return);
 fclose($handle);
 }
 ?>

Bem agora toda vez que você entrar na pasta backup e clicar em backup.php será criado o backup na pasta corrente. O backup será sempre com o nome final do arquivo basedo na data e hora, assim você terá sempre o histórico de seus backups.

Eu recomendo baixar esses backups banco de dados periodicamente para que você tenha sempre uma cópia armazenada com segurança em outros lugares. Isso será necessário caso venha perder seu plano de hospedagem. Você pode também programar uma função que dispare um anexo do banco de dados criado sempre que entrar no arquivo backup.php

Outras formas de fazer Backup

Abaixo segue classe que cria o backup de forma automatizada, sem necessidade do uso do cron do linux e ainda envia email com o banco em anexo.

Sscript 01

Script 02

Obs: Seguindo esse modelo de utilização da Cron para realizar backup automatizado, dá também para mudar ele para automatizar envio de parametros por um webservice, sacou?

Aconselho também dar uma lida nos artigos:

E assim terminamos esse tutorial de automatização de backup! Espero ter ajudado!

Sobre o Autor

Designer, Web Developer & Linux Administrator

Meu nome é Deivison Arthur, tenho 29 anos, sou Administrador Linux, Analista de Sistema, Webdesigner e Pesquisador. há mais de dez anos. Nasci no Rio de Janeiro, atualmente trabalho como Gerente de Tecnologia e E-commerce at Grupo FFernandes e Freelancer nas horas vagas. Desenvolvimento em Joomla, Wordpress, Drupal, Magento e outros GPLs...

Quantidade de Artigos : 49

Enviar Comentário

© 2012 Feito com Wordpress, Desenvolvedor: Deivison Arthur Lemos Serpa

Ir para cima