Каждая база данных должна иметь резервную копию. Можно автоматически создавать резервную копию базы данных при помощи PHP и CRON. С помощью этого скрипта вы можете выбрать конкретную таблицу для резервного копирования или выбрать целую
базу данных.
wget -O /dev/null http://your-site.com/database_backup/backup.php
function backup_database_tables($host,$user,$pass,$name,$tables)
{
$link = mysql_connect($host,$user,$pass);
mysql_select_db($name,$link);
//Получаем все таблицы
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);
}
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";
}
//Сохраняем в файл
$handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
fwrite($handle,$return);
fclose($handle);
}
> ?>
Источник:webinby.ru
Как внедрить
Лучше всего использовать скрипт, это скопировать код и поместить его в папку под названием "database_backups", как показано ниже. Затем, когда вы через браузер откроете файл backup.php он создаст резервную копию базы данных, которая хранится на вашем сервере. Я рекомендую вам скачивать эти резервные копии базы данных периодически,так как ваша копия будет хранится в надежном если вы потеряете свой хостинг.Используем CRON
Cron является планировщиком заданий, который позволяет запускать определенные сценарии в определенное время. Например у меня резервные копии базы данных создаются каждую ночь, в то время, когда трафик на моём сайте очень малый. Вы можете настроить работу CRON, если ваш веб-хостинг позволяет использовать CRON, выполнив следующую команду. Просто измените ссылку, чтобы указать на файл backup.php ,который находится у вас на сервере.wget -O /dev/null http://your-site.com/database_backup/backup.php
Файл backup.php.
//Функция для резервного копирования базы данныхfunction backup_database_tables($host,$user,$pass,$name,$tables)
{
$link = mysql_connect($host,$user,$pass);
mysql_select_db($name,$link);
//Получаем все таблицы
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);
}
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";
}
//Сохраняем в файл
$handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
fwrite($handle,$return);
fclose($handle);
}
> ?>
Источник:webinby.ru
Горячие темы