Найти в Дзене
Timeweb Cloud

Миграция базы данных: для чего нужна, как сделать, примеры использования

Оглавление

Что такое миграция баз данных, зачем она нужна, как перенести базы данных в облачную инфраструктуру. Об этом и не только мы рассказали в этой статье.

📜Читайте также: Типы данных в MySQL

Миграция баз данных

Под любой миграцией понимают перемещение чего-то или кого-то с одного места в другое. По этому же принципу работает миграция баз данных. Например, ее переносят из локальной среды в облачную.

Существует 2 типа процесса миграции:

  1. Однократная миграция подразумевает разовое перемещение. Нюанс этого процесса заключается в том, что база данных переносится из одной системы в другую. При этом поддержка первой системы, из которой выполнили перенос, прекращается.
  2. Версионная миграция данных. При данном типе база данных обновляется до новой версии. Помимо апгрейда, может быть откат к более старым версиям. Также данный тип миграции затрагивает схему, о которой более подробно рассказали в разделе «Основные понятия».

Цели миграция баз данных

Прежде чем перейти к инструкциям, разберемся, зачем компании проводят данную процедуру и какую выгоду получают. Как правило, в любой организации с каждым годом работы количество информации только приумножается. В основном для ее хранения выбирают базы данных. Но не все так просто, поскольку со временем специалисты перестают справляться с сопровождением, а также появляется необходимость в современных информационных системах.

Чтобы справиться со всеми трудностями, нужно проводить миграцию баз данных. Это помогает улучшить защиту конфиденциальности информации и закрыть вопрос с поддержкой, так как базы данных переходят под управление современных систем. Переход от старого к новому способствует цифровым трансформациям в компании.

Сейчас мы рассмотрим, почему бизнес нуждается в миграции баз данных и какие задачи она решает:

  • Чтобы повысить уровень сохранности и надежности данных.
  • Улучшить качество командной работы. Если над проектом работает команда разработчиков, миграция помогает синхронизировать код и контролировать версии программного обеспечения.
  • Устранить проблемы с масштабированием проектов.
  • Обновить функционал и повысить производительность системы хранения информации.
  • Чтобы воспользоваться возможностями современных технологий, например, работать с BigData или искусственным интеллектом.
  • Сократить расходы на сопровождение и поддержку информационных систем.

Далее познакомимся с терминологией и расшифруем основные понятия, которые встречаются в статье.

Основные термины

  • База данных (сокращенно — БД) представляет собой набор упорядоченных однородных или разнородных данных. Эти данные хранятся в соответствии со специальной схемой. Она представляет собой структуру базы данных и изображается в виде таблиц, связей и других элементов. Язык, на котором она описана, поддерживается СУБД.
  • Система управления базами данных (сокращенно — СУБД). Здесь все просто. Это специальное программное обеспечение, предназначенное для создания и управления базами данных. Также СУБД определяет формат, в котором будут храниться данные. Чаще всего это таблицы.
  • Информационная система (сокращенно — ИС) предназначена для того, чтобы искать, обрабатывать и хранить информацию. Также сюда можно отнести средства, которые помогают реализовывать эти функции.

Также нужно знать еще два термина: источник и приемник.

Под первым имеется в виду старая база данных, которую необходимо перенести.

Под приемником понимают новую базу данных, в которую перемещают данные из источника.

Данные выгружают из источника в формате xls, а в приемник их загружают, используя шаблоны. Шаблоны — это файлы описания.

Два способа миграции данных: полная и версионная

Полная миграция баз данных

При такой миграции база данных переносится полностью из источника в приемник. Чтобы осуществить данный вид миграции, необходимо выбрать технологию переноса, определить правила настройки доступа, подумать над постмиграционном тестировании и устранением недочетов. Также нужно оценить объем и состав данных, которые необходимо перенести. Все это относится к организационным моментам, чтобы сам процесс был четко организованным и непрерывным.

Помимо организационных вопросов, нужно задуматься над планом Б, если произойдет внештатная ситуация. К примеру, в процессе переноса случаются сбои, которые влекут за собой нарушение целостности, а также корректности данных. В этом случае в качестве плана Б необходимо вспомнить о методах отката баз данных к исходной версии.

И, конечно же, очень важно, чтобы работу выполнял высококвалифицированный персонал. Участники процесса должны быть поделены на 2 рабочие группы, каждая из которых будет разбираться в своей системе управления базами данных. Независимо от того, осуществляется процесс в автоматическом режиме или вручную, необходимо назначить сотрудников для мониторинга.

Также к технологическим моментам можно отнести следующее:

  • Если источников выгрузки данных несколько, требуется подготовить их список, согласовав его заранее.
  • Перед выгрузкой данных рекомендуется проводить предварительное тестирование и комплексный аудит. Чтобы определить скорость процесса и какие факторы на нее влияют. Процессы выгрузки не должен затягиваться.
  • Подготовить шаблоны загрузки данных с техническими описаниями.
  • Сопоставить исходные и загрузочные данные. Чаще всего процесс Data mapping занимает практически половину объема всего процесса. На этом этапе в виде скриптов создают правила преобразования данных, которые подлежат переносу.
  • После прохождения вышеописанных этапов данные готовы к выгрузке из источника. В процессе они трансформируются и затем перемещаются в приемник. Как мы и говорили, первоначально лучше сделать пробную миграцию с внесением корректив.
  • Заключительный этап включает в себя сверку данных. Это необходимо, чтобы проверить работоспособность данных.

Версионная миграция

Чаще всего версионную миграцию выбирают в случаях, когда необходимо контролировать версии программного обеспечения, если над разработкой программного обеспечения трудится команда специалистов, а не отдельный разработчик. Именно версионная миграция помогает не столкнуться с рассинхронизацией, когда новые версии программного обеспечения отправляются в продакшн. Также у данной процедуры есть следующие нюансы, о которых нужно знать и учитывать в работе: при переносе данных важно соблюдать последовательность, все SQL-запросы должны выполняться один раз. Если не придерживаться этих условий, то можно столкнуться с потерей данных и потратить время на их восстановление.

Допустим, вам нужно выполнить версионную миграцию. Чтобы это сделать, нужно выбрать подходящий для вас метод:

  1. Метод инкрементных изменений.
  2. Метод идемпотентных изменений.

уподобление структуры базы данных исходному коду.

Чтобы облегчить процесс переноса и избежать ошибок, были разработаны специальные наборы инструментов для каждого метода в отдельности.

Как выбрать правильный метод? Для этого нужно руководствоваться рядом принципов:

  • для каждой версии базы данных должно быть предусмотрено обновление до новых версий, а при необходимости откат на предыдущие версии;
  • упрощенное получение SQL-запросов;
  • нужно предусмотреть возможность создания базы данных с обновленной структурой с чистого листа;
  • рекомендуем продумывать миграцию базы данных таким образом, чтобы избежать редактирования вручную.

Ознакомившись с теорией, можно переходить к практике. Ниже представлены две инструкции по переносу баз данных.

Миграция базы данных PostgreSQL

Мы будем использовать две логические процедуры, а именно: репликацию и дампу.

Для начала необходимо подготовить исходный кластер, выполнив команды в данной последовательности:

  • ALTER ROLE <name> WITH REPLICATION, в скобках вместо name необходимо указать имя пользователя;
  • Затем откройте postgresql.conf и укажите следующую информацию: wal_level = logical
  • На этом этапе должна настроиться аутентификация в pg_hba.conf. Где <host>, укажите IP или DNS приемника:

host all all <host> md5

host replication all <host> md5

  • Перезапустите систему управления базами данных с использованием инструкции: systemctl restart postgresql.

После подготовки кластера можно перенести схему базы данных. При этом должно соблюдаться требование, что схема базы данных в источнике должна быть идентична схеме базы данных в приемники.

Чтобы перенести базу данных, используйте следующие утилиты: pg_dump и pg_restore.

В завершении необходимо создать публикацию в источнике при помощи инструкции CREATE PUBLICATION <name> FOR ALL TABLES, указав название публикации. Для создания публикации нужно обладать правами superuser.

После этого нужно создать подписки в приёмнике, применив инструкцию CREATE SUBSCRIPTION <name> CONNECTION, указав название подписки. Для этого действия нужно иметь доступ администратора dbaas_admin.

В связи с невозможностью репликации последовательностей необходимо произвести восстановление дампа с последовательностями при помощи утилиты psql. Для этого сбросьте подписку в приемнике, выполнив команду:

DROP SUBSCRIPTION.

Создать дамп можно при помощи вышеупомянутых утилит: pg_dump и pg_restore. Дамп базы данных можно создать в кастомном формате (для восстановления отдельных элементов) или в SQL формате.

Миграция базы данных Django

В этом блоке представлены основные инструкции, которые также, как и фреймворк Django, работают в коде на языке Python.

Назначение инструкций:

  • для создания файла миграции с кодом схемы:

makemigrations

  • для создания таблицы согласно схеме, которая находится в файле: миграции

migrate

  • для просмотра необработанных SQL-запросов реализованной миграции:

sqlmigrate

  • для перечисления миграций и их статуса:

showmigrations

Заключение

В данной статье мы рассмотрели основные моменты, которые касаются миграции баз данных. Для обеспечения непрерывности миграции, а также во избежание ошибок начните с составления плана переноса базы данных. При отсутствии намеченной стратегии пользователи сталкиваются с потерей корпоративных данных, с нарушением бизнес-процессов и всеми вытекающими из этого последствиями. Все это негативно сказывается на бюджете компании, а в некоторых случаях и на репутации.

В план необходимо включать аудит базы данных с проведением анализа формата данных. На этом этапе необходимо выявить потенциальные проблемы, связанные с конфиденциальностью данных во время осуществления миграции. Также не забывайте про резервное копирование и установление временных рамок. Для этого проводится тестирование миграции. Выполнение этих требований и соблюдение плана гарантирует то, что миграция будет выполнена успешно.

Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.💥