Автоматический бекап БД на PHP

Author Роман Чернышов    Category PHP     Tags , Комментариев 0 Дата 25 Авг

backup Автоматический бекап БД на PHPНаверняка многие из вас сталкивались с проблемой потери данных на сайте, в частности потери данных из базы данных(далее БД) mysql. Случиться это может по ряду различного рода причин, например: случайное удаление данных администратором БД(как правило вами же), проблемами связанными с хостингом(потеря данных по вине хостера), откат состояния БД на некоторый период назад — опять же по тех.причинам на хостинге, повреждение файлов БД, повреждение или потеря данных в следствии не правомерных действия пользователей, злоумышленников и т.д. (наводнения, пожары, конец света).

Обезопасить себя можно различными способами, такими как — автоматическое резервирование данных средствами хостинга, но за частую эта опция не доступна или предлагается за дополнительную ежемесячную плату. Или же как вариант организовать автоматическое резервирование(бекап,backup) базы данных mySQL(любой другой базы данных) средствами PHP.

В примере ниже рассмотрим скрипт на PHP, работающий с БД mySQL:

<?php
// 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);
}

Для работы скрипта и для его автоматического вызова каждые сутки, следует настроить планировщик заданий(Cron) на вашем хостинге. При каждом вызове скрипт делает резервную копию базы данных в файл с названием db-backup-ВРЕМЕННАЯ_МЕТКА-ХЕШ_СУММА.sql

Также заинтересованным готов предложить отдельное решение, автоматического резервного копирования БД, с поддержкой следующих опций:
— Архивация данных в .zip архив
— Выгрузка БД на сторонний FTP сервер, для надежности и гарантии сохранности файлов (FTP сервер и 1\3\5ГБ места могу предоставить)
— Настраиваемая периодичность вызова скрипта

Оставить комментарий

О блоге и авторе

Добро пожаловать на блог веб-разработчика! На протяжении многих лет, начиная с 2009 года, я занимаюсь созданием специализированных сайтов, сервисов и крупных веб-порталов. Мною было создано несколько сотен сайтов, большинство из которых работают на ПО созданном под заказ, а также на готовом ПО которое я разрабатываю на протяжении всего периода моей деятельности. Это: CMS "Совместные покупки", CMS "osRealty", CMS "Спорт прогнозы" и многое другое.

На страницах моего блога вы найдете множество информации о программировании, о появлении новых разработок, сможете ознакомиться с товарами и услугами которые я предоставляю. А также сможете получить консультацию, заказать разработку сайта или приобрести готовое решение, для реализации собственного проекта.

Поиск по блогу
Категории
Архив
Новое на сайте
Блогеры пишут
  • Роман Чернышов: Для работы капчи на PHP 5.6, замените в файле class.captcha.php строку 264 $ifunc( $this -> i [...]
  • Роман Чернышов: Схема такая: 1) На сайте есть виртуальные кошельки (далее ВК) 2) При пополнении пользователем ВК, [...]
  • Александр: Может скрипт комментариев блокирует сообщения с кодом? Или как длинный текст не проходит?
  • Александр: Пытаюсь в который раз здесь показать код, но страница обновляется, и не сообщения, ни любого оповеще [...]
  • Роман Чернышов: Лично у меня интерес к продаже ссылок пропал уже давно. Преимущество сапы, это то - что ссылки можно [...]
Портфолио Все работы


www.detskiy-mir.net
www.detskydoctor.ru
www.betelit.ru
www.all-alliance.ru
www.videogonok.ru
www.carpfishing.by
www.property-greek.com
www.domcons.ru

с 2009 года по сегодняшний день, создано более 300 сайтов...