Quantcast
Channel: RUDEBOXMySQL | RUDEBOX
Viewing all articles
Browse latest Browse all 4

Автоматическое резервное копирование MySQL

$
0
0

Резервная копия нужна всегда, не известно что может произойти с сайтом, атака или просто сбой, всегда под рукой должен быть желаемый backup. Много разработчиков создают копию в ручную, это не совсем удобно, так как не всегда есть возможность сделать резервную копию в ручную, а сбой может случиться. Для этого существует такой параметр в поставщика хостинга как расписание задач или Cron. Весьма удобная вещь, которая позволит сэкономить ваше личное время, и сделать всю работу за вас. Что от вас требуется, так это занести в таблицу некоторые параметры..

Но как же все это использовать? Вопрос конечно интересный, давайте же разберемся более детально, Самый лучший способ - скопировать код и разместить его в папке с названием 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);
}
?>

Материал взят из зарубежного источника. И представлен исключительно в ознакомительных целях.


Viewing all articles
Browse latest Browse all 4

Latest Images

Trending Articles





Latest Images