В базе данных вордпресс хранятся: настройки движка и плагинов, структура меню, статьи, страницы и тд. Всё, что касается наполнения. Для решения проблемы синхронизации приходилось делать экспорт/импорт на удаленный сайт и каждый раз менять в БД ссылки на адрес удаленного сайта. Или вносить изменения сразу на рабочий сайт, что также не хорошо. Жизнь научила не вносить изменения на рабочий сайт.
Решение проблемы синхронизации базы данных локальной версии сайта и удаленной нашлось в установки плагина: WP Sync DB. Плагин давно не обновлялся, но еще прекрасно работает.
Плагин умеет:
- синхронизировать БД и медиа файлы между 2 сайтами 1 кликом
- правильно менять на лету адреса в БД на новые
- выборочно синхронизировать отдельные таблиц БД
- синхронизировать БД в обе стороны
- передает данные между сайтами по защищенному SSH каналу
Установка WP Sync DB + Sync Media Files
Скачать последнюю версию WP Sync DB можно с репозитория. Следом скачайте дополнение к плагину WP Sync DB Media Files для синхронизации медиафайлов.
В панели управления вордпрес заходим в «Плагины» — «Добавить новый» и кликаем на «Загрузить плагин».
Кликаем «выбрать файл» и загружаем архив с плагиным. После установки и активации плагинов в разделе «Инструменты» появится новый раздел «Migrate DB».
Настройка WP Sync DB
Пройдем по всем настройкам плагина.
Вкладка «Migrate»
Export file — экспорт базы данных. При выборе «Save as file to your computer» файл сохраняется локально на ПК. Если отметить «Compress»,то БД запакуется в gzip архив.
Pull — замена БД текущего сайта на БД удаленного.
Push — замена БД удаленного сайта на БД текущего.
Find and Replace — настройки замены данных со старого сайта на новый. Первые 2 строки обязательные к заполнению. Они нужны для замены путей и адресов в БД.
- Любые адреса, ссылающиеся на старый сайт будут заменены на новые. В частности будут заменены «siteurl» и «home» в таблице wp_options. При выборе способа миграции «Pull» или «Push» замена всех адресов и ссылок происходит автоматически.Old URL — старый (текущий) адрес сайта.
New URL — адрес нового сайта. Домен на который переносите сайт. - Замена пути до корневого каталога сайта на новый. В основном нужно для сторонних плагинов, которым важно знать путь до корня сайта.Old file path — старый путь до корневого каталога.
New file path — новый путь до корневого каталога. - Другие данные для замены можно указать дополнительно кликнув на «Add row». Например где то на сайте встречается ссылка на поддомен вашего домена или адрес с www, то как раз можно это указать в дополнительных полях.Old value — старые данные.
New value — новые данные
Tables — настройка экспорта БД.
Можно выбрать «Migrate all tables with prefix «wp_»» для экспорта всей базы или «Migrate only selected tables below» для каких-то отдельных таблиц. Если не знаете зачем это, то лучше оставить как есть.
Exclude Post Types — исключение из экспорта определенные типы постов.
Например можно экспортировать базу без статей, страниц или каких-то кастомных типов постов. Если не знаете зачем это, то лучше оставить как есть.
Advanced Options
«Replace GUIDs» — замена GUID у постов. GUID — глобальный уникальный идентификатор. Используется для определения парсером RSS обрабатывалась им статья или еще нет.
«Do not migrate the ‘active_plugins’ setting (i.e. which plugins are activated/deactivated)» — отметить если не хотите синхронизировать состояние активности/деактивации плагинов. Если на локалке какой-то плагин отключен, а на удаленном сайте включен, то после синхронизации так все и останется.
«Exclude spam comments» — исключение из экспорта спам-комментарии.
«Exclude transients» — исключение кэш-данных хранящихся в БД.
Backup the remote database before replacing it — можно сделать предварительный бэкап БД на удаленном сайте перед синхронизацией.
Media Files — синхронизация медиафайлов.
«Remove remote media files that are not found on the local site» — удалит медиафайлы на удаленном сайте при отсутствии таких же файлов локально.
Save Migration Profile — можно сохранить все настройки в отдельный профиль для повторного использования.
Вкладка «Settings»
«Accept pull requests allow this database to be exported and downloaded» — разрешить экспортировать и скачивать текущую базу данных.
«Accept push requests allow this database to be overwritten» — разрешить перезапись текущей базы данных.
Если планируете двухстороннюю синхронизацию, то ставьте обе галки.
Отметьте первый пункт если планируете только экспортировать БД на удаленный сайт или второй пункт при необходимости только перезаписывать БД текущего сайта на БД удаленного.
«Enable SSL verification» — включение передачи данных по защищенному протоколу. Вероятно потребуется предварительная настройка системы на работу с ССЛ протоколом.
«Connection Info» — уникальный ключ идентификации сайта. Нужен для настройки синхронизации между двумя сайтами. Для смены ключа есть кнопка «Reset API Key».
После смены ключа сайты подключаемые по данному ключу больше не смогут синхронизироваться между собой. Нужно будет заменить в настройках удаленного сайта старый ключ на новый.
«Improve performance and reliability by not loading the following plugins for migration requests» — для повышения производительности и надежности можно отключить на время синхронизации выборочно плагины. Рекомендую активировать данную опцию и выбрать все плагины.
«Maximum Request Size» — ползунок с установкой размера запроса к удаленному серверу. Можно оставить как есть. Если вылазит ошибка 413 или проблема с тайм-аутами, уменьшите размер запроса.
Синхронизация данных между 2 сайтами
Режим «Export File» — мы рассматривать не будет. Там все понятно и описано в предыдущем разделе. Это просто экспорт БД в фаил локально или на хостинг.
Для синхронизации сайтов плагины должны быть установлены и настроены на 2 сайтах. Для примера будем выгружать БД с локальной версии сайта на удаленный (Push).
Порядок действий:
- Зайдите в настройки плагина локального сайта и во вкладке «Migrate» выберите режим «Push».
- Перейдите на удаленный сайт в настройки плагина во вкладку «Settings».
- Выбираем «Accept push requests allow this database to be overwritten».
- Копируем секретный ключ из «Connection Info».
- Переходим на локальный сайт в поле «Push» вставляем секретный ключ скопированный с удаленного сайта. Видим, что сайты соединились.
- По желанию и необходимости настраиваем опции переноса которые разбирали в предыдущем разделе.
- Сохраняем настройки «Save Migration Profile» если хотим в следующий раз синхронизировать БД с такими же настройками.
- Кликаем на «Migrate DB».
Синхронизация БД локального сайта с удаленным прошла успешно. По аналогии можете настроить синхронизацию в другую сторону.
Авторизуясь, вы даете согласие на обработку персональных данных.