Перенос базы MySQL в PostgreSQL средствами Moodle

Перенос базы MySQL в PostgreSQL средствами Moodle

от Dmitriy Makarov -
Количество ответов: 5
Доброго времени суток! Когда-то давно еще на версии Moodle 2.2 на тестовой системе пробовал работать с экспериментальной функцией dbtransfer, тогда собственно конвертировал базу в MariaDB и PostgreSQL средствами самого Moodle, а именно с соответствующей страницы системы. Сейчас же на 3.7 варианта с PostgreSQL не нахожу



Подозреваю, что нет некого модуля для этого дела на сервере... В принципе из того что я знаю есть pgloader и подобные утилиты, но хотелось бы попробовать осуществить перенос средствами самого Moodle, т.е. "из окна". 
Заранее благодарен за любые подсказки улыбаюсь
В ответ на Dmitriy Makarov

Re: Перенос базы MySQL в PostgreSQL средствами Moodle

от Vadim Tabunshchik -
Изображение пользователя Developers

Сервер PostgreSQL должен быть установлен на этой же машине.

ЗЫ: я использовал утилиту миграции FromMySqlToPostgreSql (https://github.com/AnatolyUss/nmig). Встроенный в Мудл инструмент не особо надежен, так как работает через веб-интерфейс, при большом объеме БД мало ли что может случиться.

В ответ на Vadim Tabunshchik

Re: Перенос базы MySQL в PostgreSQL средствами Moodle

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода
Есть его же вариант для командной строки admin\tool\dbtransfer\cli\migrate.php.
Но он работает очень медленно, поскольку перенос каждой из записей в бд делается в отдельной транзакции, в результате принимающая база данных должна постоянно писать на диск неоптимальными порциями.
при переносе альтернативными инструментами проблема в том, что они создают структуру таблиц не так, как её создал бы сам moodle - по другому могут называться, например, секвенции - их нет в mysql, поэтому скрипту миграции приходится самому додумывать их название. Поэтому после такого переноса нужно проверить структуру БД moodle встроенным в moodle скриптом проверки.

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

Re: Перенос базы MySQL в PostgreSQL средствами Moodle

от Ionov Maxim -

Доработал средство переноса, чтобы он копировал строки не поштучно, а пачками по 1000-30000 записей, процесс тогда будет идти намного быстрее. Кол-во записей зависит от кол-ва полей, т.к. есть ограничение на 65535 параметров в запросе. 

В ответ на Dmitriy Makarov

Re: Перенос базы MySQL в PostgreSQL средствами Moodle

от Sergey Golovanov -
Думаю не хватает пакета php для работы с постгресом. Что-то типа - php5-pgsql. И тут есть поле сервер БД - по виду не обязательно на той же машине что бы было.
В ответ на Sergey Golovanov

Re: Перенос базы MySQL в PostgreSQL средствами Moodle

от Vadim Tabunshchik -
Изображение пользователя Developers

Ну да, неправильно написал улыбаюсь

Не сам сервер, а драйвер (расширение РНР) для того сервера БД, на который нужно перенести БД. В данном случае - php72(3)(4)-pgsql