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

Cron - планировщик заданий, который позволяет автоматически запускать указанные скрипты в определенное время. Например, вы хотите создавать резервные копии базы данных каждую ночь, в то время, когда на сайте мало посетителей и нагрузка на хостинг минимальна. Вы можете настроить работу CRON, если ваш веб-хостинг это позволяет, выполнив следующую команду.
Только измените ссылку, указывающую на файл backup.php на вашем сервере.
wget -O /dev/null http://your-site.com/database_backup/backup.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);
}
Как видите всё довольно просто. Я надеюсь этот скрипт позволит уберечь ваши данные от потери.
© 2008 - 2025 Webmasters.BY Все права защищены
Спасибо
Новый комментарий