Подходы к миграции
Можно использовать множество различных подходов к миграции баз данных, включая миграцию в автономном или рабочем режиме, миграцию в рамках резервного копирования и восстановления либо миграцию с помощью пользовательского кода 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, выполните следующие задачи.
- Создайте новую целевую базу данных в Azure на выбранной вами платформе.
- Создайте проект миграции данных Azure Database Migration Service (DMS).
- Создайте схему из локальных баз данных-источников. Если вы используете MySQL, можно создать схему с помощью
sqldump
. Если база данных-источник — PostgreSQL, используйтеpg_dump
. - Создайте пустую базу данных, которая будет использоваться в качестве места назначения миграции.
- Примените схему к этой базе данных.
- Настройте сведения о соединении для исходной и целевой баз данных в проекте миграции DMS.
- Запустите проект миграции DMS. Проект передает данные и создает отчет.
- Проверьте отчет и исправьте все обнаруженные ошибки.
Миграции в рабочем режиме
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.