Миграция существующей базы данных 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.
Статья научная