Миграция существующей базы данных Redmine с MySQL на PostgreSQL
Автор: Трофимова С.С.
Журнал: Теория и практика современной науки @modern-j
Рубрика: Основной раздел
Статья в выпуске: 5 (47), 2019 года.
Бесплатный доступ
В статье рассмотрена проблема хранения и обработки информации на примере баз данных, особенно актуальная в современных условиях для любого предприятия. Поэтому в работе описан процесс миграции открытого серверного веб-приложения «Redmine» для управления проектами и задачами из базы данных MySQL в базу данных PostgreSQL. Рассмотрены параметры настройки, связанные с миграцией. Приведены возможные ошибки и способы их устранения при тестировании. Был сделан вывод о том, что миграция базы данных влияет на эффективность работы компании, на качество обмена и предоставления информации в связи с возможностью ее расширения.
Базы данных, миграция, перенос сервисов, бизнес-системы, информация
Короткий адрес: https://sciup.org/140274620
IDR: 140274620
Текст научной статьи Миграция существующей базы данных Redmine с MySQL на PostgreSQL
В современном мире одним из важнейших элементов бизнеса является хранение и обработка данных. Для данной цели предназначены базы данных (далее БД1) и их система управления. По мере работы с базами данных, ознакомления с их плюсами и минусами, возникает момент, когда принимается решение миграции из одной СУБД в другую. Миграция БД – это достаточно сложный процесс, имеющий свои проблемы и риски. В ней хранится огромное количество информации, которая необходима компании для продолжения бизнеса. Поэтому в результате миграции в новой БД должны содержаться абсолютно все данные. Необходимо сразу получить работающую систему, содержащую все данные, хранившиеся в исходной БД, чтобы по окончании процесса пользователи системы могли продолжить работу.
В данной работе была поставлена задача переноса веб-приложения Redmine2 со средним объемом информации с серверов MySQL на PostgreSQL в размере 21 мб.
Redmine – это открытое веб-приложение, основной задачей которого является управление проектами и задачами3. Используется малым и крупным бизнесом для автоматизации обслуживания клиентов. Приложение может выполнять функции «фронт-офиса» для всей ИТ-организации, являться центром приема всех жалоб и предложений, осуществлять контроль текущего состояния сервисов.
На операционную систему «Ubuntu 16.04.1», была установлена программа Redmine 3.4.4, а также прилагаемые к ней пакеты и модули: Nginx как прокси к passenger, который отвечает за обработку и показ информации. В качестве базы данных Redmine изначально используется сервер MySQL 5.7.22.
Была взята структура БД Redmine и наполнена информацией. База данных состоит из 56 таблиц, 69 последовательностей. Основные таблицы – это документы, проекты, адреса электронной почты, группы пользователей, вопросы, сообщения, новости, роли, настройки, пользователи, версии, страницы вики, задачи и другие.
Данные были сконструированы на основе созданного проекта «Дипломная работа» и задачами в веб-приложении Redmine, представлено на рисунке 1.

Рисунок 1 – Интерфейс redmine с отражением задач по проекту «Дипломная работа»
С помощью инструмента загрузки данных для PostgreSQL pgloader можно было бы перенести содержимое базы данных полностью в автоматическом режиме, воссоздавая необходимые таблицы, индексы и внешние ключи. Но этот подход не самый лучший, потому что в дальнейшем могут возникнуть непредвиденные проблемы при работе приложения или в процессе миграции на его более свежие версии. В основном могут встретиться проблемы, такие как переработка кода вручную: удаление двойных кавычек вокруг имён полей, пустых строк и удаление некоторых запросов. Также могут возникнуть ошибки с зависимостью сборки версий pgloader. Для каждой версии Ubuntu разрешается работать с помощью определенного набора пакетов, другие пакеты могут не подойти. Для решения ошибок придется осваивать нетривиальные в поддержке и эксплуатации инструменты.
После поиска подходящего и работающего инструмента миграции была выбрана утилита «py-mysql2pgsql». Этот инструмент позволяет брать данные с сервера MySQL4 и записывать файл дампа, совместимый с PostgresSQL (8.2 или выше). В файле прописаны настройки миграции серверов MySQL и Postgres – порт, пользователь, имя хоста и базы данных, а также прописаны пути для осуществления миграции. Для использования данного инструмента необходимо установить сервер. Чтобы осуществить миграцию, нужно установить сервер PostgreSQL 9.5, зависимости «Python 2.6», библиотеки «libpq-dev» и изменить конфигурационные файлы. Была проведена успешная миграции на простых типах данных размером 21 Мб за 2 минуты. Также с помощью тестирования с разными типами, объемами данных были выявлены проблемы миграции с версиями, apt-get устанавливает старую версию pip, которая ведёт к проблемам. Эта версия не поддерживает миграцию сложных типов, например, видео и анимацию. Решением проблемы стало обновление установки python с 2.6 до 2.7 с последующей переустановкой py-mysql2pgsql.
В результате миграции были получены следующие итоги:
-
• Перенесены данные из исходной базы без потерь;
-
• Сохранена функциональность;
-
• Получена новая БД, которая содержит те же данные и
- функционально соответствует исходной, показано на рисунке 2.

Рисунок 2 – успешная миграция с MySQL в PostgreSQL
Список литературы Миграция существующей базы данных Redmine с MySQL на PostgreSQL
- Системы управления базами [Электронный ресурс]. - Режим доступа: https://studfiles.net/preview/5656655
- Перенос Redmine с MySQL на PostgreSQL [Электронный ресурс]. - Режим доступа: https://kurazhov.ru/redmine-mysql-to-postgresql
- Lesyuk, A. Mastering Redmine / Andriy Lesyuk.- Birmingham B3 2PB, UK, 2016.- 344 p.
- Джоунс, Э. Функции SQL. Справочник программиста: Пер. с англ. / Э. Джоунс, Р. Стивенз, Р. Плю.- М.: ООО "И.Д. Вильямс", 2007.-768 c.