Cloud & IT Cert Prep · Урок

Рекомендации по миграции баз данных

Используйте Azure Database Migration Service для переноса базы данных SQL Server в Azure SQL с минимальным простоем и устраните распространенные проблемы схемы и совместимости.

Урок 4 из 413 шагов

«Рекомендации по миграции баз данных» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Чем миграция базы данных отличается от других видов миграции

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

Служба миграции баз данных Azure

Azure Database Migration Service (DMS) — это полностью управляемая служба, которая координирует онлайн-миграции (с почти нулевым простоем) и офлайн-миграции (с простоем) из популярных локальных СУБД в управляемые службы баз данных Azure. DMS поддерживает такие источники, как SQL Server, MySQL, PostgreSQL, MongoDB, Oracle, и такие целевые службы, как Azure SQL Database, Azure SQL Managed Instance, Azure Database for MySQL и Azure Cosmos DB. Служба интегрируется с Data Migration Assistant (DMA) для проверки совместимости до миграции.

# Create a DMS instance
az dms create \
  --service-name myDMS \
  --resource-group myRG \
  --location eastus \
  --sku-name Premium_4vCores \
  --vnet myVnet \
  --subnet mySubnet

Предварительная оценка с помощью DMA

Перед миграцией SQL Server запустите Data Migration Assistant (DMA) для исходной базы данных. DMA выявляет: проблемы совместимости (используемые в базе данных функции, которые не поддерживаются целевой службой Azure SQL), критические изменения, устаревшие функции и рекомендации по производительности. Он формирует подробный отчёт HTML, в котором проблемы упорядочены по степени серьёзности, чтобы ваша команда могла устранить их до начала окна миграции.

# Run DMA assessment from CLI (Windows only)
# DmaCmd.exe /AssessmentName='SQL2022toAzureSQL' \
#   /AssessmentSourcePlatform='SqlOnPrem' \
#   /AssessmentTargetPlatform='AzureSqlDatabase' \
#   /AssessmentDatabases='Server=myServer;Initial Catalog=AdventureWorks;Integrated Security=true'

Онлайн- и офлайн-миграция

Офлайн-миграция делает исходную базу данных недоступной на всё время миграции — это приемлемо для небольших баз данных или некритичных систем, для которых можно запланировать окно технического обслуживания. Онлайн-миграция использует сбор изменённых данных (CDC) или доставку журналов транзакций для непрерывной репликации изменений во время загрузки новой базы данных, сокращая простой до одного заключительного этапа переключения. Онлайн-миграция рекомендуется для баз данных размером более 1 ГБ или с соглашениями об уровне обслуживания, требующими простоя менее 1 часа.

Настройка проекта миграции DMS

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

# Create a DMS project for SQL Server to Azure SQL Database
az dms project create \
  --service-name myDMS \
  --resource-group myRG \
  --name SQL2AzureSQL \
  --source-platform SQL \
  --target-platform SQLDB \
  --location eastus

Сначала мигрируйте схему

Всегда переносите схему до данных. Используйте DMA или SQL Server Management Studio (SSMS), чтобы создать сценарий и развернуть в целевой базе данных Azure SQL таблицы, представления, хранимые процедуры, функции и индексы. Убедитесь, что все объекты схемы существуют и компилируются без ошибок, прежде чем разрешить DMS начать передачу данных. Ошибки схемы, обнаруженные в середине миграции, могут повредить процесс миграции и вынудить вас начать всё заново.

# Generate schema scripts using sqlpackage
sqlpackage /Action:Script \
  /SourceServerName:myOnPremServer \
  /SourceDatabaseName:AdventureWorks \
  /TargetServerName:mysqlserver.database.windows.net \
  /TargetDatabaseName:AdventureWorksAzure \
  /OutputPath:/tmp/schema.sql

Начальная загрузка данных

DMS выполняет полную загрузку данных, считывая исходную базу данных таблица за таблицей и записывая строки в целевую Azure SQL с помощью массовой вставки. Во время полной загрузки служба обрабатывает большие таблицы, разбивая их на пакеты. Индексы в целевой базе отключаются на время загрузки для максимального увеличения пропускной способности, а затем перестраиваются. Для очень больших баз данных (масштаба TB) рассмотрите возможность использования Azure Data Factory или экспорта bacpac, чтобы предварительно загрузить данные и сократить время работы DMS.

Отслеживание изменений данных для онлайн-синхронизации

Для онлайн-миграций DMS включает отслеживание изменений данных SQL Server (CDC) в источнике, чтобы фиксировать операции INSERT, UPDATE и DELETE, выполняемые во время полной загрузки. После завершения полной загрузки DMS воспроизводит зафиксированные изменения в целевой базе, постепенно сокращая отставание. Когда задержка снижается почти до нуля, база данных готова к переключению. Для работы CDC необходимо, чтобы SQL Server Agent был запущен, а исходная база данных находилась в режиме полного восстановления.

-- Enable CDC on source database
EXEC sys.sp_cdc_enable_db;

-- Enable CDC on specific table
EXEC sys.sp_cdc_enable_table
  @source_schema = N'dbo',
  @source_name = N'Orders',
  @role_name = NULL;

Переключение и проверка

Когда отставание CDC становится минимальным, запустите переключение на портале DMS. DMS прекращает принимать новые события CDC, применяет оставшиеся изменения и отмечает миграцию как завершённую. После этого перенаправьте строки подключения приложения к конечной точке Azure SQL. Выполните запросы для проверки данных, сравнивая количество строк и агрегированные контрольные суммы между источником и целевой базой для критически важных таблиц. Оставьте исходную базу данных в режиме только для чтения на 24–48 часов после переключения на случай необходимости отката.

-- Validate row counts post-cutover
SELECT TABLE_NAME, TABLE_ROWS
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo'
ORDER BY TABLE_NAME;

Настройка производительности после миграции

После миграции Azure SQL Database может работать иначе, чем локальный SQL Server, из-за различий в кэшах планов запросов, статистике и оборудовании. Запустите Database Experimentation Assistant (DEA), чтобы воспроизвести трассировки рабочей нагрузки в целевой Azure-среде и сравнить планы выполнения. Включите Automatic Tuning в Azure SQL, чтобы служба автоматически создавала или удаляла индексы и принудительно применяла планы запросов без регрессий, со временем повышая производительность без ручного вмешательства.

-- Enable Automatic Tuning on Azure SQL Database
ALTER DATABASE CURRENT SET AUTOMATIC_TUNING (
  FORCE_LAST_GOOD_PLAN = ON,
  CREATE_INDEX = ON,
  DROP_INDEX = OFF
);

Миграция других подсистем баз данных

DMS также поддерживает миграцию подсистем с открытым исходным кодом: MySQL в Azure Database for MySQL по схеме mysqldump + репликация binlog, а PostgreSQL в Azure Database for PostgreSQL с использованием слотов логической репликации. Для миграции MongoDB в Cosmos DB используйте API Cosmos DB для MongoDB и собственный конвейер mongodump / mongorestore либо коннектор MongoDB в Azure Data Factory для инкрементального CDC. Всегда тестируйте миграцию на копии, не предназначенной для рабочей среды, прежде чем выполнять её с актуальными данными.

# Offline MySQL migration using mysqldump
mysqldump -h source-server -u admin -p \
  --single-transaction --routines --triggers \
  myDatabase > /tmp/myDatabase.sql

# Restore to Azure Database for MySQL
mysql -h myserver.mysql.database.azure.com \
  -u adminUser@myserver -p myDatabase < /tmp/myDatabase.sql

Быстрая проверка

Проверьте своё понимание концепций Microsoft Azure Fundamentals (AZ-900), рассмотренных в этом уроке.

Итоги урока

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

Можно начать бесплатно

Изучай Cloud & IT Cert Prep с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
150
Уроки
600

Часто задаваемые вопросы

Урок «Рекомендации по миграции баз данных» бесплатный?

Да — полный текст урока «Рекомендации по миграции баз данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Чему я научусь в уроке «Рекомендации по миграции баз данных»?

Используйте Azure Database Migration Service для переноса базы данных SQL Server в Azure SQL с минимальным простоем и устраните распространенные проблемы схемы и совместимости. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?

Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Рекомендации по миграции баз данных»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?

Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Платформа миграции 6R
  2. Azure Migrate: обнаружение и оценка
  3. Перенос с помощью Azure Migrate: перенос без изменений
  4. Рекомендации по миграции баз данных
← Назад к Cloud & IT Cert Prep