Друзья, всем привет! Рад всех вас видеть у себя в гостях Сегодня я расскажу, как синхронизировать базы данных 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 у вас сложилось, можно приступать к цели нашего урока – синхронизации баз данных.
Подготовка к процессу синхронизации
Прежде чем приступить к работе с базой данных, — обязательно сделайте резервную копию. Так как если вы сделаете, что-то не так. То сможете всё восстановить из копии.
Также, с целью отработки процесса, рекомендую для начала установить локальный сервер Денвер и потренироваться на нём.
Так, вы и процесс поймёте, и сможете создать нужную базу данных на своём компьютере и перенести на хостинг уже готовую БД.
Самое главное не забудьте про резервную копию.
Сравнение баз данных в 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.
Далее переходим в раздел «Базы данных» и создаём две базы данных. Для этого нужно ввести название и нажать на кнопку «Создать».
Шаг 2. Импортируем данные в базу
Итак, я сделал резервные копии баз данных. Одну с тестового сайта, другую с моего блога в интернете. Они понадобятся для импорта содержимого во вновь созданные базы. А далее будут страховкой.
У вас должно быть тоже две базы, которые вы будете синхронизировать.
Теперь нужно импортировать данные из резервных копий в новые базы данных. Для этого выбираете новую базу – откройте закладку «Импорт» — выбираете «файл резервной копии» — нажимаете кнопку «Ок».
Шаг 3. Синхронизация баз данных
Вообще, есть возможность просто копировать нужные таблицы из одной базы в другую. Но мы рассмотрим непосредственно процесс синхронизации. Как полной так и частичной (в виде отдельных таблиц).
Для этого нужно перейти на главную страницу phpMyAdmin и выбрать раздел «Синхронизировать».
Теперь в качестве источника определяем базу данных с блога в интернете (она более свежая), а в качестве целевой базы – базу с тестового сайта. Наша задача скопировать новые статьи, комментарии и теги в базу данных тестового сайта.
После того как пройдёт сравнение. На выбор будет предложено синхронизировать отдельные таблицы, в которых есть изменения, или провести полную синхронизацию.
Если вы хотите синхронизировать отдельные таблицы, то необходимо нажать на буквы S или D. Эти буковки станут серыми, а в окошке ниже вы увидите добавленные таблицы на синхронизацию. После чего вы можете синхронизировать эти таблицы, нажав на кнопку «Применить выбранные изменения».
В нашем случае подходит именно этот способ, так как нам нужно синхронизировать только статьи, комментарии и метаданные.
Для синхронизации баз данных полностью, ничего отмечать не нужно. Достаточно нажать на кнопку «Синхронизировать базы данных».
Вот, и всё. На этом процесс синхронизации окончен. Можно проверять результат. Для наглядного примера, я сменил базу данных на локальном сайте. Если кто забыл, делается это в файле wp-config.php. И теперь можно сравнить количество статей, записей и комментариев. Правда, комментариев на блоге стало немного больше, пока я писал статью.
Статистика по тестовому блогу:
Статистика по рабочему блогу:
Ну и напоследок напомню, что синхронизировать базу данных это ещё половина дела. К базе данных должны прилагаться и файлы, задействованные в работе сайта. К примеру, если не скопировать скриншоты, сопровождающие статью, то статья будет без них с пустыми местами.
А теперь советую посмотреть видеоурок, в котором весь процесс синхронизации баз данных я показываю шаг за шагом.
Сегодня на этом всё. Всем желаю хорошего настроения. До встречи в новых материалах. И конечно же, жду ваших комментариев А полученные знания пригодятся вам при переносе сайта с локального сервера на хостинг.
С уважением, Максим Зайцев.
Здравствуйте, Максим! Среди молодых блогеров проводится эстафета — награда «Liebster Blog Award». Я передаю ее вам пройдите по ссылке что бы ознакомиться с правилами http://santehskript.ru/estafeta-nagrady-liebster-blog-award/
Андрей, добрый вечер. Спасибо за награду. Некоторое время назад я уже был удостоен этой награды. Это отличная возможность рассказать о молодых и интересных ресурсах. О получении награды и её передаче я написал здесь: http://1zaicev.ru/kak-ya-poluchil-premiyu-liebster-blog-award/
Здравствуйте! А что делать если в phpmyadmin, нет кнопки синхронизировать?
Здравствуйте, Роман. Вы работаете на локальном сервере Денвер, версия которого устарела. Вам нужно обновит Денвер.
У меня не Денвер, а MAMP. Хотел через хостинг, но там тоже нет синхронизации. Может в тех. поддержке хостинга спросить? Или может есть другой вариант синхронизировать базы данных?
Роман, вы можете установить Денвер и сделать через него. Ну или спросите в техподдержке хостинга, возможно они даже предложат вам помочь в этом вопросе.
Максим, привет! Мой хостинг не предоставляет услуг синхронизации баз данных. В PHPMyAdmin нет кнопки сихронизировать. Поддержка хостинга написала следующее: «Интерфейс phpMyAdmin не предусматривает подобного функционала, т.к. данное действие требует индивидуального подхода и требует сложных действий, которые должны проводится на основе анализа обеих баз данных и результата который должен получится. К сожалению, подобный анализ выходит за рамки поддержки хостинг провайдера» Но мне нужно синхронизировать некоторые таблицы, а именно: комментарии и доп. инфу к ним. Как я могу это сделать простым копированием нужных таблиц из одной базы в другую?
Лариса, привет. Да, можно простым копированием, но лучше сделать это на Денвере. Для этого нужно загрузить туда обе базы и синхронизировать нужные таблицы. Базы полностью синхронизировать не обязательно.
Максим, синхронизировала на Денвере. А как теперь все это благолепие перенести на хостинг? При экспорте в базу данных выдает ошибку…
Лариса, синхронизация была всей базы или таблиц в отдельности? Ошибка скорей всего из за префикса в базе данных. То есть к названию базы добавляется префикс, если он отличный у этих баз, будет ошибка.