Только для читателей Lifeexample возможно открыть интернет-магазин на Moguta.CMS со скидкой в 15%

<<< phpDoc и phpDocumentor || Tortoise HG — клиент для Mercurial >>>

SOS мой блог исчез! Копирование базы данных

07.10.2012
Копирование базы данных

Здравствуйте, уважаемые читатель блога LifeExample, эта статья будет участвовать в очередном конкурсе "SOS — мой блог исчез!", тем не менее, ее содержимое, будет полностью соответствовать тематике блога. Сегодня я хочу показать вам, как можно собственноручно организовать автоматическое резервное копирование базы данных, чтобы не дай бог, столкнувшись с проблемой самоликвидации вашего хостинга, не пришлось лить слезы и рвать на голове волосы.

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

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

Что делать, когда сайт исчез

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

SOS - мой блог исчез!

Первая промелькнувшая мысль: "Как плохо! Ну, ничего, позвоню хостеру, сейчас разберемся."

— Алло, это техническая поддержка?
-Гудок… гудок… пип… *Перенаправление на автоответчик*: “Здравствуйте, Вы позвонили в компанию ‘Самый лучший хостер в мире’, по причине нашего банкротства все сайты более не доступны, желаем вам успехов!”

Ну и что будем делать дальше???

Если Вы знаете, что такое резервная копия базы данных, и периодически ее делали, а также имеете все файлы шаблона своего сайта, то дело поправимое, но что если ничего не осталось?

В таком случае дела плохи! Но не стоит отчаиваться, что-то еще удастся восстановить.

  1. Первое чтобы я сделал в этом случае, это открыл бы сервис "яндекс вебмастер", и перешел в раздел индексации страниц, в котором отражены все ссылки и названия проиндексированных страниц вашего блога.
  2. яндекс веб-мастер помощь в резервном копировании блога
  3. Переписав все названия статей, я бы стал вбивать их в поисковую строку яндекса с припиской имени своего блока вот так:
  4. резервная копия из базы данынх яндекса

    Дополнение статьи именем блога, позволит вывести ссылку на статью, первой в списке выдачи.

  5. Наведя курсор на зеленую ссылку, я бы увидел появившиеся кнопки "Копия" и "Еще". Нажав на надпись "Копия", уважаемый яндекс, вывел бы мне сохраненную версию этой страницы.
  6. востановление контента css и image
  7. Далее используя инспектор элементов от Google Chrome , я мог бы восстановить все спрайты, картинки, и css стили шаблона, ну и конечно же скопировать текст статьи.

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

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

Согласитесь, что описанный способ восстановления блога, довольно трудозатратный, если статей на блоге было свыше 500 шт., кроме того, если не повезет и яндекс в этот момент начнет индексировать статьи по новой, то не найдя их на месте, он просто удалит копию (Информация не проверена).

Плагин резервного копирования данных для wordpress

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

Также, кроме очевидных советов, я бы хотел подарить Вам, уважаемые читатели, написанный мной плагин для резервного копирования базы данных. Конечно, существует огромное множество подобных плагинов для wordpress, которые делают копии баз данных блога, но как ни странно все они какие-то сложные в использовании и через-чур навороченные.

Именно поэтому я хочу поделиться с вами плагином, которым сам пользуюсь для ведения бекапов БД блога.

Скачать плагин резервного копирования для wordpress ( Скачали: 121 чел. ) 

Устанавливается плагин, обычным способом. После его активации в меню параметров, вам станет доступным пункт Дамп базы.

плагин wordpress резервное копирование БД

Перейдя на страницу плагина, вы не увидите обильного наличия настроек для копирования, вам даже не придется указывать логин и пароль для доступа к БД! Все, что будет на странице, это кнопка "Сделать резервную копию", нажав на которую в корне вашего сайта создастся папка dump_sql с дампом базы данных блога.

При каждом следующем нажатии резервная копия будет сохраняться в папку dump_sql, под именем такого вида: dump_[дата создания]_[специальный_код].

Дата создания в имени дампа, поможет сориентироваться в поиске нужной версии, а специальный код, защитит файл от кражи. Если вы, не доверяете этой защите, то можете создать файл .htaccess в этой папке, который защитит ее от чужих рук и глаз. О том, как это сделать я когда-то описывал в статье "htaccess запретить доступ". Хотя я считаю, это действие избыточным, поскольку невозможно догадаться, что в данной папке лежит такой файл dump_07-10-2012108bcfcf24ded5338e9f80d03bf70df1.sql , и напрямую к нему обратиться.

Предложенный функционал, только от части, упрощает жизнь, но не снимает ответственности по ежедневному нажатию на кнопку "Сделать резервную копию". Поэтому я хочу предложить вам еще одну приятную услугу плагина, по созданию копий автоматом, при каждой новой публикации статьи.

Для этого в файле functions.php, расположенного в папке с шаблоном блога, добавьте строку:

1
add_action ( 'publish_post', 'auto_create_dump' );

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

Не забывайте, только, копировать полученные дампы из папки dump_sql, в более надежное хранилище.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?
header('Content-Type: text/html; charset= utf-8');
backup_database_tables('localhost','root','','myblog');
// Функция резервного копирования базы данных
function backup_database_tables($host,$user,$pass,$name)
{
 
    $link = mysql_connect($host,$user,$pass);
    mysql_select_db($name,$link);
 
    //Получаем все таблицы
        $tables = array();
   
        $result = mysql_query('SHOW TABLES');
         while($row = mysql_fetch_row($result))
        {
            $tables[] = $row[0];
        }
   
    //Цикл по всем таблицам и формирование данных
    foreach($tables as $table)
    {
   
     if($result = mysql_query('SELECT * FROM '.$table)){
     
     $num_fields = mysql_num_fields($result); // узнаем сколько в таблице полей
     
        $return.= 'DROP TABLE IF EXISTS '.$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] = str_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-'.date('d-m-Y').'.sql','w+');
    fwrite($handle,$return);
    fclose($handle);
}

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

SEMsocial — сообщество людей, которые работают в Интернете! Присоединяйтесь и получайте подарки!

Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.

Нравится

Комментарии

  • нерадивый бухгалтер

    Спасибо, что не прошли мимо конкурса и поделились с читатели такой полезной информацией. Если блог исчез — главное не впадать в панику.

  • Юрий

    Здравствуйте, Марк!

    Установил Ваш плагин Dumper и после активации в админке WordPress (версия 3.7.1) появились вот такие замечания:

    1. Notice: Функция has_cap вызвана с аргументом, который считается устаревшим с версии 2.0!
    Использование уровней пользователей в плагинах и темах считается устаревшим.
    Используйте роли и возможности.. in
    /wp-includes/functions.php on line 3017

    2. Notice: Undefined index: create in /wp-content/plugins/dumper/dumper.php on line 26

    3. Notice: Undefined variable: msg in /wp-content/plugins/dumper/dumper.php on line 55

    Помогите, пожалуйста, устранить замечания.
    Спасибо.
    С уважением, Юрий

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

    Не отвечать

    Подписаться на комментарии к этой статье по RSS

    Яндекс.Метрика