- → Программирование
- → MySQL
- → Статьи
MySQL backup: автоматический бэкап MySQL на PHP
Организовываем автоматические бэкапы базы данных MySQL.
Каждая база данных должна быть подстрахована резервным копированием или бэкапом (backup). Если вы все еще делаете это вручную, то можете радоваться, потому что есть простое решение автоматического бэкапа на PHP. С помощью данного скрипта вы можете передавать конкретные таблицы для резервного копирования или сделать резервное копирование всей базы данных.
Как реализовать mysql backups?
Лучше всего скопировать код предоставленного скрипта и поместить его в папку «database_backups», как показано на скриншоте ниже. Затем при вызове файла backup.php, он будет создавать резервную копию базы данных на вашем сервере. Я бы рекомендовал периодически копировать все файлы бэкапов себе на компьютер или другое хранилище, что бы перестраховаться на случай потери хостинга.
Автоматизация mysql backups с помощью CRON
CRON является проверенным планировщиком заданий, который позволяет запускать скрипты в определенное время. Например, можно делать бэкапы базы данных ночью, когда падает трафик. Вы можете легко настроить CRON, если его поддерживает ваш хостинг. Для этого вам необходимо выполнить следующую команду, в которой нужно просто изменить ссылку на ваш файл создающий бэкапы.
wget -O /dev/null http://your-site.com/database_backup/backup.php
PHP код файла
<?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); //get all of the tables 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); } //cycle through each table and format the data 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"; } //save the file $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+'); fwrite($handle,$return); fclose($handle); } ?>
Мы рассмотрели простой пример реализации автоматического бэкапа базы данных mysql. Да, способ дубовый, но он приемлем для маленьких сайтов. Если у вас большой проект, то использование php очень медленное в сравнении с использованием mysqldump. Убедительная просьба к тем, кто знает как организовать резервное копирование лучше, напишите в комментариях.
Источник материала ...
Дальше: MySQLdump: скачать, работа с mysqldump, примеры















Development — Taras Moroz