Краткая инструкция об очень интересном и полезном инструменте pgLoader, который позволяет легко мигрировать базу данных MariaDB или MySQL в PostgreSQL.
Для начала нам понадобится развернуть небольшой стенд, к примеру, на Debian GNU/Linux, установив на него выше упомянутые СУБД.
Для стенда рекомендуется не особо экономить на ресурсах, так как это будет влиять на скорость переноса базы данных.
Установка MariaDB — читаем здесь: https://dondub.com/2021/05/zapusk-subd-mariadb-na-debian-10-9-i-ubuntu-server-21-04/
Установка PostgreSQL — здесь: https://dondub.com/2021/05/zapusk-subd-postgresql-v-debian-10-9/
После этого в MariaDB или MySQL создадим БД. Для этого заходим в консоль mysql:
# mysql -u root -p
создаём базу данных:
CREATE DATABASE my_database;
и выходим из консоли:
EXIT;
Затем из старого сервера заливаем дамп в базу данных my_database. Как делаются дампы можно почитать здесь: https://dondub.com/2021/07/damp-bazy-dannyh-mariadb-i-mysql/
Далее устанавливаем утилиту pgLoader
# apt install pgloader
Теперь создаём базу данных и пользователя в PostgreSQL
# su postgres -c “createuser pwprompt dbuser”
# su postgres -c “createdb -O dbuser my_database”
После этого создадим скрипт для переноса БД
# touch db_load.config
и в нём пропишем:
LOAD DATABASE
FROM mysql://root:pASSwoRD@localhost:3306/my_database
INTO postgresql://dbuser:pASSw0RD@localhost:5432/my_database
ALTER SCHEMA ‘dbschema’ RENAME TO ‘public’;
Выполняем скрипт
# pgloader db_load.config
По окончанию база данных PostgreSQL наполнится таблицами и данными.
Теперь выгружаем дамп и загружаем его на боевой сервер. Как это делается можно почитать здесь: https://dondub.com/2021/07/damp-bazy-dannyh-postgresql/
Всё должно заработать без проблем.
Похожие посты:
- Выполнение SQL-запросов в БД MariaDB (MySQL) и…
- Выполнение SQL-запросов в БД MariaDB (MySQL) на PHP
- Выполнение SQL-запросов в БД MariaDB (MySQL) на Perl
- Стек Angie + PHP + MariaDB/PostgreSQL на Debian 12
- Стек Angie + PHP + MariaDB/PostgreSQL на CentOS 7
- Стек Angie + PHP + MariaDB/PostgreSQL на FreeBSD 14