Блог о программировании и бизнесу
Петро
 Веб-сайт: http://mksite.com.ua
 Twitter: peterborodatyy
 Skype: peterborodatyy
 ICQ: 614-669-612
 RSS: Новости блога
QR код:

Блог о программировании и бизнесу


Программирование, советы по бизнесу, основы личностного роста.
Добавлено: 27.04.20120 комментариев   723 просмотра

Автоматическое резервное копирование базы данных


Каждая база данных нуждается в резервном копировании. Если вы делаете его вручную, то пора переходить к автоматическому варианту с использованием простого решения на PHP.  C помощью данного скрипта мы сможете сохранять отдельную таблицу или всю базу целиком.

 

Как использовать

Самый лучший способ - скопировать код и разместить его в папке с названием ‘database_backups’ как показано ниже на своем веб сервере. Затем при любом вызове файла backup.php будет создавать резервную копию и сохранять ее в туже папку. Останется только скачать копию в другое место для надежного хранения и использования в случае необходимости.

Резервное         копирование базы данных

Используем CRON

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

wget -O /dev/null http://ваш_сайт.com/database_backup/backup.php

Код скрипта

<?php

backup_database_tables('ХОСТ','ИМЯ_ПОЛЬЗОВАТЕЛЯ','ПАРОЛЬ','БАЗА_ДАННЫХ', '*');

 

// Функция резервного копирования базы данных

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);

}

?>



Новые записи:




 Имя: 

 Комментарий:


 Проверка CAPTCHA:
 Введите сколько будет: 4*9 ??



QR код блога