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
- http://www.dagondesign.com/files/backup_dbs.txt
- http://www.dagondesign.com/files/backup_dbs_config.txt
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!
