Подходы к миграции

Завершено

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

Например, вашей молодой компании крайне важна база данных для связи с поставщиками и вы хотите попробовать выполнить миграцию без перерыва в работе службы для пользователей. Этот отдел компании работает круглосуточно, и предсказуемые периоды отсутствия нагрузки, когда базу данных можно отключить от сети, редки. С другой стороны, система автоматизированного проектирования (CAD) используется только в течение рабочий недели, поэтому ее можно отключить на выходные и перенести в Azure.

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

Когда следует использовать экспорт и импорт

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

Рассматривайте возможность использования методов экспорта и импорта в следующих случаях.

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

  • Если требуется перенести объекты базы данных, такие как ограничения, представления, функции, процедуры и триггеры, с управлением настройкой этих объектов в облачной базе данных.

  • Если требуется импортировать данные из внешних источников, отличных от MySQL, MariaDB или PostgreSQL.

Например, использование экспорта и импорта можно рассмотреть в следующих сценариях.

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

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

  • Имеется большая электронная таблица, содержащая данные о продуктах. Эти данные нужно перенести в облачную базу данных.

Планирование миграции на основе экспорта и импорта

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

Убедитесь, что понимаете, как будут перенесены следующие объекты.

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

Экспорт и импорт для MySQL и MariaDB

Скрипты SQL можно использовать для выборочного экспорта и импорта из одной базы данных в другую. Если локальная база данных находится в MySQL или MariaDB, есть также несколько средств, способных помочь в этом, в том числе следующие.

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

  • Toad Edge. Это конкурирующий набор инструментов, разработанный компанией Quest. Он используется для экспорта и импорта данных из баз данных MySQL и PostgreSQL.

  • Navicat. Это средство администрирования базы данных с графическим пользовательским интерфейсом также совместимо с базами данных MariaDB.

  • mysqlimport. Это средство командной строки может импортировать данные из текстовых файлов.

Внимание

База данных Azure для MySQL и База данных Azure для MariaDB поддерживают только подсистему хранилища InnoDB. При наличии таблиц, использующих другие подсистемы, такие как подсистема MyISAM, перед миграцией в Azure необходимо преобразовать их в InnoDB.

Экспорт и импорт PostgreSQL

PostgreSQL предоставляет следующие средства, используемые для экспорта и импорта данных.

  • pgAdmin. Это служебная программа с графическим пользовательским интерфейсом для администраторов PostgreSQL. Она предоставляет интерфейс для экспорта и импорта данных.

  • pg_dump. Это средство командной строки, используемое для экспорта баз данных в различных форматах, включая тестовые. Вы можете изменять полученные файлы .sql перед их импортом с помощью служебной программы psql.

  • Toad Edge. Это та же служебная программа, которая используется с MySQL.

Резервное копирование и восстановление

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

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

Когда следует использовать резервное копирование и восстановление

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

  • Если требуется выполнить миграцию всей базы данных или набора баз данных за одну операцию.

  • Если не требуется вносить изменения в данные, схему или другие объекты базы данных во время миграции.

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

  • У вас есть система c отдельной базой данных, которую вы хотите перенести в облако посредством операции lift-and-shift с минимальными необходимыми изменениями.

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

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

Планирование резервного копирования и восстановления в MySQL и MariaDB

Чтобы создать резервную копию базы данных на локальном сервере, используйте средство mysqldump из командной строки. Это создаст файл .sql, который вы восстановите в облачную базу данных, передавая его в команду mysql в виде скрипта. Если вы предпочитаете использовать средство с графическим пользовательским интерфейсом, выберите приложение PhpMyAdmin или MySQL Workbench. Эти средства с графическим пользовательским интерфейсом могут выполнять резервное копирование и восстановление данных.

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

Чтобы избежать проблем совместимости, убедитесь, что номер версии MySQL или MariaDB, используемой в облаке, соответствует номеру версии локального сервера базы данных. База данных Azure для MySQL поддерживает версии 5.6, 5.7 и 8.0. База данных Azure для MariaDB поддерживает версии 10.2 и 10.3. Если локальный сервер использует более раннюю версию, рассмотрите возможность обновления до одной из вышеупомянутых версий и устранения всех проблем в локальной среде перед миграцией в облако.

Планирование резервного копирования и восстановления в PostgreSQL

Эквивалентными средствами резервного копирования и восстановления из командной строки в PostgreSQL являются pg_dump и pg_restore. В качестве средства резервного копирования и восстановления графического пользовательского интерфейса используйте Toad Edge.

Код пользовательского приложения

Если у вас есть обширные требования к преобразованию данных или вы хотите выполнить необычную миграцию, рассмотрите возможность написания собственного пользовательского кода для перемещения данных из локальной базы данных MySQL, PostgreSQL или MariaDB в облако.

Пользовательский код может принимать множество форм. Выбранный язык и платформа в основном зависят от опыта работы команды разработчиков.

  • Скрипты SQL, созданные из базы данных и измененные либо разработанные с нуля.
  • Скомпилированный код из платформы разработки, такой как .NET или Java.
  • Скрипты на PHP или Node.js.
  • Скрипты оболочки для Bash или PowerShell.

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

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

Azure Database Migration Service

В состав Azure входит гибкая служба, которая называется Azure Database Migration Service (DMS) и используется для беспрепятственной миграции в рабочем режиме из нескольких источников данных на платформы данных Azure. Эти платформы включают Базу данных Azure для MySQL, Базу данных Azure для MariaDB и Базу данных Azure для PostgreSQL.

Использование службы Azure DMS стоит рассмотреть при необходимости выполнить миграцию базы данных в Azure в рабочем режиме.

Первоначальная миграция

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

  1. Создайте новую целевую базу данных в Azure на выбранной вами платформе.
  2. Создайте проект миграции данных Azure Database Migration Service (DMS).
  3. Создайте схему из локальных баз данных-источников. Если вы используете MySQL, можно создать схему с помощью sqldump. Если база данных-источник — PostgreSQL, используйте pg_dump.
  4. Создайте пустую базу данных, которая будет использоваться в качестве места назначения миграции.
  5. Примените схему к этой базе данных.
  6. Настройте сведения о соединении для исходной и целевой баз данных в проекте миграции DMS.
  7. Запустите проект миграции DMS. Проект передает данные и создает отчет.
  8. Проверьте отчет и исправьте все обнаруженные ошибки.

Миграции в рабочем режиме

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

Перенос MySQL или MariaDB в Базу данных SQL Azure

Если вы хотите переместить базу данных, размещенную локально на сервере Базы данных MySQL, в облако Azure (и вам не нужна облачная база данных для использования MySQL), рассмотрите возможность миграции в Базу данных SQL Azure. База данных SQL Azure — это PaaS-реализация ведущего в отрасли ядра СУБД SQL Server от Майкрософт. Она включает доступность, масштабируемость и безопасность корпоративного уровня, проста в мониторинге и управлении.

Аналогичным образом, если локальный сервер базы данных работает под управлением MariaDB, можно рассмотреть возможность миграции в Базу данных SQL Azure. Процесс будет очень похож, так как MariaDB является вилкой MySQL.

База данных SQL Azure включает больше функций, чем База данных Azure для MySQL и База данных Azure для MariaDB.

Примечание.

Может потребоваться изменить все приложения, подключающиеся к перенесенной базе данных, так как База данных SQL Azure использует типы данных, объекты базы данных и API, отличные от используемых MySQL и MariaDB. Обратитесь к разработчикам, чтобы определить, какой объем работы требуется для переноса клиентского приложения из локальной базы данных MySQL или MariaDB в облачную базу данных SQL Azure.

SQL Server Migration Assistant для MySQL

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

После подключения помощник копирует полную схему в Базу данных SQL Azure и преобразует все типы данных в их эквиваленты SQL Server. Он также переносит представления, процедуры, триггеры и другие объекты. Затем можно начать миграцию данных из MySQL в Базу данных SQL Azure.

Примечание.

Помощник по миграции SQL Server для MySQL не тестировался для переноса баз данных MariaDB в Базу данных SQL Azure.