Перенос работающего сайта WordPress с Mysql на PostgreeSQL
Задача: перенести рабочий, наполненный постами, сайт на движке WordPress с БД MySQL на PostgreeSQL
Инструментарий:
1) pgloader — утилита для переноса данных из баз данных MySQL в PostgreeSQL
Особенности о которые спотыкался:
- для успешного переноса необходимо чтобы пользователь в терминале под которым осуществляется перенос имел максимальные права в БД и имел доступ «без пароля» для входа в консоль pgsql
- при переносе создается схема с именем БД, а не заливается по умолчанию в схему public. Что в принципе для нашей ситуации даже будет плюсом.
- Перед переносом, БД уже должна быть создана в PostgreeSQL
Синтаксис:
2) Плагин PG4WP который на «лету» исправляет запросы к MySQL на PostgreeSQL
Особенности:
- работает только при «чистой» установке. Т.е. WordPress должен быть штатно проинсталлирован с нуля
- Инсталляция корректно работает только до версии WordPress 5.9
- Плагин заброшен, последнее обновление — 3 года назад
Итак, общий алгоритм переноса рабочего WordPress получается такой:
- Переносим при помощи pgloader БД в отдельную схему
- Заново устанавливаем WordPress 5.9 с плагином PG4WP
- Удаляем из схемы public wp_posts (это если только статьи переносим) и переносим её из схемы созданной pgloader в public
- Пробуем обновить штатно WordPress
Точно понадобится:
Удаление всех таблиц в схеме:
Поменять схему всех таблиц:
В принципе пока вполне рабочая схема