Рекомендации по миграции баз данных
Используйте Azure Database Migration Service для переноса базы данных SQL Server в Azure SQL с минимальным простоем и устраните распространенные проблемы схемы и совместимости.
«Рекомендации по миграции баз данных» — бесплатный урок Azure Fundamentals на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Azure Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Azure Fundamentals содержит 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.
Часто задаваемые вопросы
Урок «Рекомендации по миграции баз данных» бесплатный?
Да — полный текст урока «Рекомендации по миграции баз данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Azure Fundamentals, подпишись на CoddyKit PRO. Курс Azure Fundamentals содержит 4 уроков всего.
Чему я научусь в уроке «Рекомендации по миграции баз данных»?
Используйте Azure Database Migration Service для переноса базы данных SQL Server в Azure SQL с минимальным простоем и устраните распространенные проблемы схемы и совместимости. Ты практикуешь Azure Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Azure Fundamentals?
Предыдущий опыт не требуется. Azure Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Рекомендации по миграции баз данных»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Azure Fundamentals?
Да. Каждый урок Azure Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Платформа миграции 6R
- Azure Migrate: обнаружение и оценка
- Перенос с помощью Azure Migrate: перенос без изменений
- Рекомендации по миграции баз данных