Что такое миграция баз данных, зачем она нужна, как перенести базы данных в облачную инфраструктуру. Об этом и не только мы рассказали в этой статье.
📜Читайте также: Типы данных в MySQL
Миграция баз данных
Под любой миграцией понимают перемещение чего-то или кого-то с одного места в другое. По этому же принципу работает миграция баз данных. Например, ее переносят из локальной среды в облачную.
Существует 2 типа процесса миграции:
- Однократная миграция подразумевает разовое перемещение. Нюанс этого процесса заключается в том, что база данных переносится из одной системы в другую. При этом поддержка первой системы, из которой выполнили перенос, прекращается.
- Версионная миграция данных. При данном типе база данных обновляется до новой версии. Помимо апгрейда, может быть откат к более старым версиям. Также данный тип миграции затрагивает схему, о которой более подробно рассказали в разделе «Основные понятия».
Цели миграция баз данных
Прежде чем перейти к инструкциям, разберемся, зачем компании проводят данную процедуру и какую выгоду получают. Как правило, в любой организации с каждым годом работы количество информации только приумножается. В основном для ее хранения выбирают базы данных. Но не все так просто, поскольку со временем специалисты перестают справляться с сопровождением, а также появляется необходимость в современных информационных системах.
Чтобы справиться со всеми трудностями, нужно проводить миграцию баз данных. Это помогает улучшить защиту конфиденциальности информации и закрыть вопрос с поддержкой, так как базы данных переходят под управление современных систем. Переход от старого к новому способствует цифровым трансформациям в компании.
Сейчас мы рассмотрим, почему бизнес нуждается в миграции баз данных и какие задачи она решает:
- Чтобы повысить уровень сохранности и надежности данных.
- Улучшить качество командной работы. Если над проектом работает команда разработчиков, миграция помогает синхронизировать код и контролировать версии программного обеспечения.
- Устранить проблемы с масштабированием проектов.
- Обновить функционал и повысить производительность системы хранения информации.
- Чтобы воспользоваться возможностями современных технологий, например, работать с BigData или искусственным интеллектом.
- Сократить расходы на сопровождение и поддержку информационных систем.
Далее познакомимся с терминологией и расшифруем основные понятия, которые встречаются в статье.
Основные термины
- База данных (сокращенно — БД) представляет собой набор упорядоченных однородных или разнородных данных. Эти данные хранятся в соответствии со специальной схемой. Она представляет собой структуру базы данных и изображается в виде таблиц, связей и других элементов. Язык, на котором она описана, поддерживается СУБД.
- Система управления базами данных (сокращенно — СУБД). Здесь все просто. Это специальное программное обеспечение, предназначенное для создания и управления базами данных. Также СУБД определяет формат, в котором будут храниться данные. Чаще всего это таблицы.
- Информационная система (сокращенно — ИС) предназначена для того, чтобы искать, обрабатывать и хранить информацию. Также сюда можно отнести средства, которые помогают реализовывать эти функции.
Также нужно знать еще два термина: источник и приемник.
Под первым имеется в виду старая база данных, которую необходимо перенести.
Под приемником понимают новую базу данных, в которую перемещают данные из источника.
Данные выгружают из источника в формате xls, а в приемник их загружают, используя шаблоны. Шаблоны — это файлы описания.
Два способа миграции данных: полная и версионная
Полная миграция баз данных
При такой миграции база данных переносится полностью из источника в приемник. Чтобы осуществить данный вид миграции, необходимо выбрать технологию переноса, определить правила настройки доступа, подумать над постмиграционном тестировании и устранением недочетов. Также нужно оценить объем и состав данных, которые необходимо перенести. Все это относится к организационным моментам, чтобы сам процесс был четко организованным и непрерывным.
Помимо организационных вопросов, нужно задуматься над планом Б, если произойдет внештатная ситуация. К примеру, в процессе переноса случаются сбои, которые влекут за собой нарушение целостности, а также корректности данных. В этом случае в качестве плана Б необходимо вспомнить о методах отката баз данных к исходной версии.
И, конечно же, очень важно, чтобы работу выполнял высококвалифицированный персонал. Участники процесса должны быть поделены на 2 рабочие группы, каждая из которых будет разбираться в своей системе управления базами данных. Независимо от того, осуществляется процесс в автоматическом режиме или вручную, необходимо назначить сотрудников для мониторинга.
Также к технологическим моментам можно отнести следующее:
- Если источников выгрузки данных несколько, требуется подготовить их список, согласовав его заранее.
- Перед выгрузкой данных рекомендуется проводить предварительное тестирование и комплексный аудит. Чтобы определить скорость процесса и какие факторы на нее влияют. Процессы выгрузки не должен затягиваться.
- Подготовить шаблоны загрузки данных с техническими описаниями.
- Сопоставить исходные и загрузочные данные. Чаще всего процесс Data mapping занимает практически половину объема всего процесса. На этом этапе в виде скриптов создают правила преобразования данных, которые подлежат переносу.
- После прохождения вышеописанных этапов данные готовы к выгрузке из источника. В процессе они трансформируются и затем перемещаются в приемник. Как мы и говорили, первоначально лучше сделать пробную миграцию с внесением корректив.
- Заключительный этап включает в себя сверку данных. Это необходимо, чтобы проверить работоспособность данных.
Версионная миграция
Чаще всего версионную миграцию выбирают в случаях, когда необходимо контролировать версии программного обеспечения, если над разработкой программного обеспечения трудится команда специалистов, а не отдельный разработчик. Именно версионная миграция помогает не столкнуться с рассинхронизацией, когда новые версии программного обеспечения отправляются в продакшн. Также у данной процедуры есть следующие нюансы, о которых нужно знать и учитывать в работе: при переносе данных важно соблюдать последовательность, все SQL-запросы должны выполняться один раз. Если не придерживаться этих условий, то можно столкнуться с потерей данных и потратить время на их восстановление.
Допустим, вам нужно выполнить версионную миграцию. Чтобы это сделать, нужно выбрать подходящий для вас метод:
- Метод инкрементных изменений.
- Метод идемпотентных изменений.
уподобление структуры базы данных исходному коду.
Чтобы облегчить процесс переноса и избежать ошибок, были разработаны специальные наборы инструментов для каждого метода в отдельности.
Как выбрать правильный метод? Для этого нужно руководствоваться рядом принципов:
- для каждой версии базы данных должно быть предусмотрено обновление до новых версий, а при необходимости откат на предыдущие версии;
- упрощенное получение 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-тренды, делятся полезными инструкциями и даже приглашают к себе работать.💥