Перенос Redmine с MySQL на PostgreSQL

Для переноса базы Redmine с MySQL на PostgreSQL необходимо выполнить несколько простых действий.

Но условимся для начала, что у нас есть установленный и работающий redmine (правда, статья там об установке на postgres), базу которого с MySQL нужно перенести на PostgreSQL. А это значит, что необходимо настроить и установить некоторые нужные пакеты приложений.

Сам процесс перехода таков:

Устанавливаем пакеты

sudo apt install postgresql postgresql-contrib \
postgresql-server-dev-10 python-pip python-dev -y

Создаём базу

Заходим под пользователем postgres

sudo su - postgres
psql
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'very_strong_pass' NOINHERIT VALID UNTIL 'infinity';
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;

Задаём пароль к базе

\password postgres

И выходим

/q

И выходим из под пользователя postgres

Редактируем конфигурационный файл redmine, для включения поддержки новой БД

cd /path/to/redmine/dir/
nano config/database.yml

После настроек mysql-адаптера вставляем строки для postgres-адаптера

Например:

production:
 adapter: mysql2
 database: redmine
 host: localhost
 username: root
 password: very_strong_pass
 encoding: utf8
 socket: /var/run/mysqld/mysqld.sock

production:
 adapter: postgresql
 database: redmine
 host: localhost
 username: postgres
 password: very-strong_pass

Сохраняемся.

Включаем поддержку новой базы

bundle install --without development test

Ставим пакет py-mysql2pgsql для переноса базы

sudo pip install py-mysql2pgsql

Запускаем утилиту для создания конфигурационного файла.

py-mysql2pgsql

Редактируем только что созданный файл

nano mysql2pgsql.yml
mysql:
 hostname: localhost
 port: 3306
 socket: /var/run/mysqld/mysqld.sock
 username: root
 password: very_strong_pass
 database: redmine
 compress: false
 destination:
 # if file is given, output goes to file, else postgres
 file:
 postgres:
 hostname: localhost
 port: 5432
 username: redmine
 password: very_strong_pass
 database: redmine

Сохраняемся и запускаем конвертацию

py-mysql2pgsql -v -f mysql2pgsql.yml

Теперь можно закомментировать старый mysql-адаптер в файле конфигурации

И перезапустить сервер приложений. В моём случае — перезапустить nginx

 

 

Добавить комментарий

Ваш e-mail не будет опубликован.