- Подробности
-
Категория: PHP. Система
Каждая база данных нуждается в резервном копировании. Если вы делаете его вручную, то пора переходить к автоматическому варианту с использованием простого решения на PHP. C помощью данного скрипта вы сможете сохранять отдельную таблицу или всю базу целиком.
Как использовать
Самый лучший способ — скопировать код и разместить его в папке с названием ‘database_backups’ как показано ниже на своем веб сервере. Затем при любом вызове файла backup.php будет создавать резервную копию и сохранять ее в туже папку. Останется только скачать копию в другое место для надежного хранения и использования в случае необходимости.
Резервное копирование базы данных
Используем CRON
Cron — планировщик задач, который позволяет вам запускать определенные скрипты в заданное время. Например, можно делать резервную копию базы данных каждую ночь, когда трафик достаточно низок. Если ваш хостинг разрешает использовать CRON, то для запуска резервного копирования можно использовать следующую команду, которую нужно занести в таблицу crontab.
1 wget -O /dev/null http://ваш_сайт.com/database_backup/backup.php
Код скрипта
01 <?php
02 backup_database_tables('ХОСТ','ИМЯ_ПОЛЬЗОВАТЕЛЯ','ПАРОЛЬ','БАЗА_ДАННЫХ', '*');
03
04 // Функция резервного копирования базы данных
05 function backup_database_tables($host,$user,$pass,$name,$tables)
06 {
07
08 $link = mysql_connect($host,$user,$pass);
09 mysql_select_db($name,$link);
10
11 //Получаем все таблицы
12 if($tables == '*')
13 {
14 $tables = array();
15 $result = mysql_query('SHOW TABLES');
16 while($row = mysql_fetch_row($result))
17 {
18 $tables[] = $row[0];
19 }
20 }
21 else
22 {
23 $tables = is_array($tables) ? $tables : explode(',',$tables);
24 }
25
26 //Цикл по всем таблицам и формирование данных
27 foreach($tables as $table)
28 {
29 $result = mysql_query('SELECT * FROM '.$table);
30 $num_fields = mysql_num_fields($result);
31
32 $return.= 'DROP TABLE '.$table.';';
33 $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
34 $return.= "nn".$row2[1].";nn";
35
36 for ($i = 0; $i < $num_fields; $i++)
37 {
38 while($row = mysql_fetch_row($result))
39 {
40 $return.= 'INSERT INTO '.$table.' VALUES(';
41 for($j=0; $j<$num_fields; $j++)
42 {
43 $row[$j] = addslashes($row[$j]);
44 $row[$j] = ereg_replace("n","\n",$row[$j]);
45 if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
46 if ($j<($num_fields-1)) { $return.= ','; }
47 }
48 $return.= ");n";
49 }
50 }
51 $return.="nnn";
52 }
53
54 //Сохраняем файл
55 $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
56 fwrite($handle,$return);
57 fclose($handle);
58 }
59 ?>
Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: papermashup.com/creating-automatic-mysql-database-backups/
Перевел: Сергей Фастунов