Webmasters.BY

Главная Статьи Веб-программирование Создаем автоматически бэкап базы данных MySQL
Создаем автоматически бэкап базы данных MySQL
Рейтинг пользователей: / 2
ХудшийЛучший 
31.01.2012 20:52

Создаем автоматически бэкап базы данных MySQL

Для любой базы данных необходимо регулярно создавать бэкапы, и если вы до настоящего времени делали это вручную, то теперь вы можете упростить эту процедуру, потому что есть простое решение с использованием PHP. С помощью этого скрипта Вы можете передавать конкретные таблицы для резервного копирования или создавать резервную копию всей базы данных.

Как использовать

Лучше всего скопируйте этот скрипт и поместите его в папку под названием "database_backups", как показано ниже. Затем всякий раз, когда вы вызываете файл backup.php, он будет создавать резервную копию базы данных, которая будет хранится на вашем сервере в этой же папке. Я бы рекомендовал периодически скачивать эти резервные копии базы данных на локальный компьютер или в какое-либо другое надежное хранилище данных,  на тот случай если вы потеряете все данные на вашем хостинге.

Создаем автоматически бэкап базы данных MySQL

Использование CRON

Cron - планировщик заданий, который позволяет автоматически запускать указанные скрипты в определенное время. Например, вы хотите создавать резервные копии базы данных каждую ночь, в то время, когда на сайте мало посетителей и нагрузка на хостинг минимальна. Вы можете настроить работу CRON, если ваш веб-хостинг  это позволяет, выполнив следующую команду.

Только измените ссылку, указывающую на файл backup.php на вашем сервере.

wget -O /dev/null http://your-site.com/database_backup/backup.php

PHP-код

А это непосредственно сам код файла backup.php. Вам необходимо передать функции backup_database_tables пять обязательных параметров: HOST (чаще всего это localhost), USERNAME (имя пользователя базы данных), PASSWORD (пароль для этого пользователя), DATABASE (имя базы данных для которой необходимо сделать резервную копию), в пятом параметре перечисляете таблицы для которых нужен бэкап, если нужно сделать копию всех таблиц, то указываете '*'.

<?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);
 
 //получаем все таблицы
 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);
}
?>

Как видите всё довольно просто. Я надеюсь этот скрипт позволит уберечь ваши данные от потери.

Перевод с papermashup.com

Добавить комментарий


Защитный код
Обновить

Если вы заметили ошибку в тексте новости, пожалуйста, выделите её и нажмите Ctrl+Enter

Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом

Обновлено 31.01.2012 22:43
 

Апельсин-1

Голосование

Ваш любимый html-редактор?

Новые файлы

Шпаргалка по HTML5 Canvas

Archive - бесплатный кириллический шрифт

Шпаргалка по HTML5 атрибутам обработчиков событий

activecloud.ru

TisRef

Баннер
Система Orphus

Кто онлайн

Сейчас 71 гостей онлайн

Комментарии

Статистика