Миграция существующей базы данных Redmine с MySQL на PostgreSQL

Автор: Трофимова С.С.

Журнал: Теория и практика современной науки @modern-j

Рубрика: Основной раздел

Статья в выпуске: 5 (47), 2019 года.

Бесплатный доступ

В статье рассмотрена проблема хранения и обработки информации на примере баз данных, особенно актуальная в современных условиях для любого предприятия. Поэтому в работе описан процесс миграции открытого серверного веб-приложения «Redmine» для управления проектами и задачами из базы данных MySQL в базу данных PostgreSQL. Рассмотрены параметры настройки, связанные с миграцией. Приведены возможные ошибки и способы их устранения при тестировании. Был сделан вывод о том, что миграция базы данных влияет на эффективность работы компании, на качество обмена и предоставления информации в связи с возможностью ее расширения.

Базы данных, миграция, перенос сервисов, бизнес-системы, информация

Короткий адрес: https://sciup.org/140274620

IDR: 140274620

Migrate an existing Redmine database from MySQL to PostgreSQL

The article deals with the problem of storage and processing of information on the example of databases, especially relevant in modern conditions for any enterprise. Therefore, the paper describes the process of migration of open server web application "Redmine" for project and task management from MySQL database to PostgreSQL database. The settings related to migration are discussed. Possible errors and ways of their elimination at testing are given. It was concluded that the migration of the database affects the efficiency of the company, the quality of exchange and provision of information in connection with the possibility of its expansion.

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