Для любой базы данных необходимо регулярно создавать бэкапы, и если вы до настоящего времени делали это вручную, то теперь вы можете упростить эту процедуру, потому что есть простое решение с использованием 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 - 2024 Webmasters.BY Все права защищены
Новый комментарий