Экспорт только страниц и записей с помощью дампа mysql

26 июн. 2016 г., 13:16:47
Просмотры: 15.5K
Голосов: 3

Как экспортировать только страницы и записи используя подход mysql база данных в базу данных? Конкретнее:

  • какие таблицы нужно выбрать для дампа (предполагаю wp-posts и wp-post-meta)
  • безопасно ли экспортировать только часть таблиц (те, что содержат данные страниц/записей), а не все

(Моя цель - синхронизировать разработку с продакшен-сайтом, и так как на продакшене добавлено много функций post festum, мой выбор - экспортировать только страницы и записи. Встроенный инструмент экспорта WordPress в сочетании с доступными плагинами импорта не дал полезного результата.)

0
Все ответы на вопрос 3
2

Контент включает пользователя-автора и комментарии (и, вероятно, еще что-то). Экспорт части базы данных в качестве способа переноса данных не кажется очень надежным решением.

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

26 июн. 2016 г. 14:36:40
Комментарии

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

Miloš Đakonović Miloš Đakonović
26 июн. 2016 г. 18:44:35

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

Mark Kaplun Mark Kaplun
26 июн. 2016 г. 20:06:41
0

Обычно это не лучшая идея. Смотрите эту диаграмму базы данных WordPress. Вам необходимо учитывать:

  • записи, которые имеют категории или метки (термины), их связи, метаданные терминов и таксономии
  • записи, у которых есть авторы (пользователи)
  • записи, имеющие комментарии
  • объекты, которые на самом деле являются записями, но вы можете не осознавать это (например, почти всё в WordPress — это записи; многие плагины хранят свои данные как записи: Contact Form 7, группы полей Advanced Custom Fields и многие другие)
  • любые другие изменения, которые могли быть внесены в вашу тестовую версию и не синхронизированы с рабочим сервером (например, уверены ли вы, что в таблице options ничего не изменилось?)

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

Не зная всех деталей вашей ситуации, вот несколько возможных вариантов:

  • Импорт/экспорт WordPress (который, как вы сказали, вы пробовали, но неясно, почему он не сработал)
  • Ручное повторное добавление нужных записей (что может быть или не быть сложным в зависимости от их количества)
  • Добавление записей в новую таблицу, а затем написание скрипта для перебора записей и вызова wp_insert_post() для каждой из них
  • Создание дампа каждой базы данных с помощью mysqldump и сравнение их, чтобы определить, насколько сильно изменился рабочий сайт, и решить, можно ли просто перезаписать базу данных и вручную установить нужные настройки

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

РЕДАКТИРОВАНИЕ: С момента написания этого ответа был выпущен Mergebot. Я не использовал его, поэтому не могу поручиться за него, но он выглядит многообещающе, а у автора есть репутация создателя хороших плагинов.

26 июн. 2016 г. 23:14:49
0

Вы можете использовать инструмент WordPress Import/Export для экспорта страниц и записей с тестового сайта на рабочий. Имейте в виду, что после импорта необходимо вручную обновить все URL на рабочем сайте (например, заменить dev.example.com на example.com).

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

11 июл. 2019 г. 00:57:54