Доброго времени суток! Когда-то давно еще на версии Moodle 2.2 на тестовой системе пробовал работать с экспериментальной функцией dbtransfer, тогда собственно конвертировал базу в MariaDB и PostgreSQL средствами самого Moodle, а именно с соответствующей страницы системы. Сейчас же на 3.7 варианта с PostgreSQL не нахожу
Подозреваю, что нет некого модуля для этого дела на сервере... В принципе из того что я знаю есть pgloader и подобные утилиты, но хотелось бы попробовать осуществить перенос средствами самого Moodle, т.е. "из окна".
Заранее благодарен за любые подсказки
В ответ на Dmitriy Makarov
Re: Перенос базы MySQL в PostgreSQL средствами Moodle
от Vadim Tabunshchik -
Сервер PostgreSQL должен быть установлен на этой же машине.
ЗЫ: я использовал утилиту миграции FromMySqlToPostgreSql (https://github.com/AnatolyUss/nmig). Встроенный в Мудл инструмент не особо надежен, так как работает через веб-интерфейс, при большом объеме БД мало ли что может случиться.
В ответ на Vadim Tabunshchik
Re: Перенос базы MySQL в PostgreSQL средствами Moodle
от Vadim Dvorovenko -
Есть его же вариант для командной строки admin\tool\dbtransfer\cli\migrate.php.
Но он работает очень медленно, поскольку перенос каждой из записей в бд делается в отдельной транзакции, в результате принимающая база данных должна постоянно писать на диск неоптимальными порциями.
при переносе альтернативными инструментами проблема в том, что они создают структуру таблиц не так, как её создал бы сам moodle - по другому могут называться, например, секвенции - их нет в mysql, поэтому скрипту миграции приходится самому додумывать их название. Поэтому после такого переноса нужно проверить структуру БД moodle встроенным в moodle скриптом проверки.
Но он работает очень медленно, поскольку перенос каждой из записей в бд делается в отдельной транзакции, в результате принимающая база данных должна постоянно писать на диск неоптимальными порциями.
при переносе альтернативными инструментами проблема в том, что они создают структуру таблиц не так, как её создал бы сам moodle - по другому могут называться, например, секвенции - их нет в mysql, поэтому скрипту миграции приходится самому додумывать их название. Поэтому после такого переноса нужно проверить структуру БД moodle встроенным в moodle скриптом проверки.
И, кстати, если сервер postgresql разместить на машине, с другим физическим диском, то процесс может пойти быстрее, так как чтение и запись будет на разных дисках
Доработал средство переноса, чтобы он копировал строки не поштучно, а пачками по 1000-30000 записей, процесс тогда будет идти намного быстрее. Кол-во записей зависит от кол-ва полей, т.к. есть ограничение на 65535 параметров в запросе.
В ответ на Dmitriy Makarov
Re: Перенос базы MySQL в PostgreSQL средствами Moodle
от Sergey Golovanov -
Думаю не хватает пакета php для работы с постгресом. Что-то типа - php5-pgsql. И тут есть поле сервер БД - по виду не обязательно на той же машине что бы было.
В ответ на Sergey Golovanov
Re: Перенос базы MySQL в PostgreSQL средствами Moodle
от Vadim Tabunshchik -
Ну да, неправильно написал
Не сам сервер, а драйвер (расширение РНР) для того сервера БД, на который нужно перенести БД. В данном случае - php72(3)(4)-pgsql