Как синхронизировать базы данных WordPress

Друзья, всем привет! Рад всех вас видеть у себя в гостях ;-) Сегодня я расскажу, как синхронизировать базы данных WordPress. А так же о том, какие таблицы в базе наиболее важные и как с ними работать.

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

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

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

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

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

Структура базы данных WordPress

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

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

Итак, рассмотрим ключевые таблицы в базе данных WordPress.

wp_options – содержит все настройки сайта;

wp_posts – все статьи и записи на сайте;

wp_postmeta – вспомогательные данные о статьях и записях на сайте;

wp_comments – комментарии;

wp_commentmeta – вспомогательная информация о комментариях;

wp_term_relationships – связи статей и записей с категориями и тегами;

wp_terms – связи категорий (рубрик) со ссылками;

wp_term_taxonomy – связи категорий, тегов, ссылок;

wp_usermeta – информация обо всех зарегистрированных пользователях;

wp_users – информация об администраторе.

Основные таблицы в БД WordPress
Основные таблицы в БД WordPress

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

Аналитика в базе данных
Аналитика в базе данных

Вот теперь, когда общее представление о базе данных WordPress у вас сложилось, можно приступать к цели нашего урока – синхронизации баз данных.

Подготовка к процессу синхронизации

Прежде чем приступить к работе с базой данных, — обязательно сделайте резервную копию. Так как если вы сделаете, что-то не так. То сможете всё восстановить из копии.

Также, с целью отработки процесса, рекомендую для начала установить локальный сервер Денвер и потренироваться на нём.

Так, вы и процесс поймёте, и сможете создать нужную базу данных на своём компьютере и перенести на хостинг уже готовую БД.

Самое главное не забудьте про резервную копию.

Сравнение баз данных в phpMyAdmin

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

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

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

Для сравнения возьмём одну цифру – количество статей. Так как для таких сайтов, как мой, – это самое ценное. Ну и комментарии, конечно. К тому же эти цифры всегда у вас на виду.

Анализируем тестовый сайт и базу данных:

Для начала посмотрим на количество статей. Сделать это можно в административной панели Вордпресс. Достаточно открыть консоль.

Показатели локальной базы
Показатели локальной базы

Как видно, на скриншоте, статей на тестовом сайте – 136.

После обновления темы оформления, я успел написать ещё пару статей. И сейчас их уже 138.

Показатели реальной базы
Показатели реальной базы

Количество статей должно соответствовать количеству записей в таблице wp_posts. Но, если открыть эту таблицу, то записей вы увидите гораздо больше.

Общее количество записей в таблице
Общее количество записей в таблице

Как видите на скриншоте – всего записей 2,245. И среди них и статьи и отдельные записи. А ещё это куча черновиков и прочих записей о картинках и так далее.

Поэтому сразу определить количество статей нереально. Для этого потребуется сделать небольшой запрос с параметрами сортировки.

Открываете базу данных – таблицу wp_posts – переходите на закладку SQL – вводите запрос:

SELECT * FROM `wp_posts` WHERE `post_status` = 'publish' AND `post_type` = 'post'

Этот запрос говорить о том, что в таблице wp_posts нужно выбрать все записи (*), где статус – опубликовано (publish) и это статья (post).

Запрос на сортировку
Запрос на сортировку

В итоге получаем 136 записей. Вот теперь эта цифра соответствует количеству статей.

Сортитовка по статьям
Сортитовка по статьям

Точно так же сверяется и другая база данных. В моём случае – реальная база с моего блога.

Эти знания помогут вам не потерять ничего важного. И проверить после синхронизации, всё ли прошло успешно.

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

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

Синхронизация баз данных WordPress

Все действия будем делать на локальном сервере. А после готовую базу данных можно импортировать на хостинг.

Шаг 1. Создание двух пустых баз данных

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

Первым делом запускаете Денвер и в браузере набираете localhost/tools/, а далее жмёте на ссылке phpmyadmin.

Запуск phpMyAdmin
Запуск phpMyAdmin

Далее переходим в раздел «Базы данных» и создаём две базы данных. Для этого нужно ввести название и нажать на кнопку «Создать».

Создание новой базы данных
Создание новой базы данных

Шаг 2. Импортируем данные в базу

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

У вас должно быть тоже две базы, которые вы будете синхронизировать.

Теперь нужно импортировать данные из резервных копий в новые базы данных. Для этого выбираете новую базу – откройте закладку «Импорт» — выбираете «файл резервной копии» — нажимаете кнопку «Ок».

Импорт базы данных
Импорт базы данных

Шаг 3. Синхронизация баз данных

Вообще, есть возможность просто копировать нужные таблицы из одной базы в другую. Но мы рассмотрим непосредственно процесс синхронизации. Как полной так и частичной (в виде отдельных таблиц).

Для этого нужно перейти на главную страницу phpMyAdmin и выбрать раздел «Синхронизировать».

Начало синхронизации
Начало синхронизации

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

Выбор баз для синхронизации
Выбор баз для синхронизации

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

Результат сравнения баз данных
Результат сравнения баз данных

Если вы хотите синхронизировать отдельные таблицы, то необходимо нажать на буквы S или D. Эти буковки станут серыми, а в окошке ниже вы увидите добавленные таблицы на синхронизацию. После чего вы можете синхронизировать эти таблицы, нажав на кнопку «Применить выбранные изменения».

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

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

Вот, и всё. На этом процесс синхронизации окончен. Можно проверять результат. Для наглядного примера, я сменил базу данных на локальном сайте. Если кто забыл, делается это в файле wp-config.php. И теперь можно сравнить количество статей, записей и комментариев. Правда, комментариев на блоге стало немного больше, пока я писал статью.

Статистика по тестовому блогу:

Итоги по локальной базе
Итоги по локальной базе

Статистика по рабочему блогу:

Итоги по реальной базе
Итоги по реальной базе

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

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

Сегодня на этом всё. Всем желаю хорошего настроения. До встречи в новых материалах. И конечно же, жду ваших комментариев ;-) А полученные знания пригодятся вам при переносе сайта с локального сервера на хостинг.

С уважением, Максим Зайцев.

Понравилась статья? Поделиться с друзьями:
Комментарии: 10
  1. Андрей

    Здравствуйте, Максим! Среди молодых блогеров проводится эстафета — награда «Liebster Blog Award». Я передаю ее вам пройдите по ссылке что бы ознакомиться с правилами http://santehskript.ru/estafeta-nagrady-liebster-blog-award/

    1. Максим Зайцев (автор)

      Андрей, добрый вечер. Спасибо за награду. Некоторое время назад я уже был удостоен этой награды. Это отличная возможность рассказать о молодых и интересных ресурсах. О получении награды и её передаче я написал здесь: http://1zaicev.ru/kak-ya-poluchil-premiyu-liebster-blog-award/

  2. Roman

    Здравствуйте! А что делать если в phpmyadmin, нет кнопки синхронизировать?

    1. Максим Зайцев (автор)

      Здравствуйте, Роман. Вы работаете на локальном сервере Денвер, версия которого устарела. Вам нужно обновит Денвер.

      1. Roman

        У меня не Денвер, а MAMP. Хотел через хостинг, но там тоже нет синхронизации. Может в тех. поддержке хостинга спросить? Или может есть другой вариант синхронизировать базы данных?

        1. Максим Зайцев (автор)

          Роман, вы можете установить Денвер и сделать через него. Ну или спросите в техподдержке хостинга, возможно они даже предложат вам помочь в этом вопросе.

  3. Лариса

    Максим, привет! Мой хостинг не предоставляет услуг синхронизации баз данных. В PHPMyAdmin нет кнопки сихронизировать. Поддержка хостинга написала следующее: «Интерфейс phpMyAdmin не предусматривает подобного функционала, т.к. данное действие требует индивидуального подхода и требует сложных действий, которые должны проводится на основе анализа обеих баз данных и результата который должен получится. К сожалению, подобный анализ выходит за рамки поддержки хостинг провайдера» Но мне нужно синхронизировать некоторые таблицы, а именно: комментарии и доп. инфу к ним. Как я могу это сделать простым копированием нужных таблиц из одной базы в другую?

    1. Максим Зайцев (автор)

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

      1. Лариса

        Максим, синхронизировала на Денвере. А как теперь все это благолепие перенести на хостинг? При экспорте в базу данных выдает ошибку…

        1. Максим Зайцев (автор)

          Лариса, синхронизация была всей базы или таблиц в отдельности? Ошибка скорей всего из за префикса в базе данных. То есть к названию базы добавляется префикс, если он отличный у этих баз, будет ошибка.

Добавить комментарий