Práticas recomendadas para migração de bancos de dados
Use o Azure Database Migration Service para migrar um banco de dados do SQL Server para o Azure SQL com tempo de inatividade mínimo e resolva problemas comuns de esquema e compatibilidade.
Práticas recomendadas para migração de bancos de dados é uma aula grátis de Azure Fundamentals no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Azure Fundamentals, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Azure Fundamentals inclui 4 aulas no total.
Por que a migração de bancos de dados é diferente
Migrar um banco de dados é mais complexo do que mover uma VM, pois os bancos de dados têm estado e frequentemente mantêm conexões ativas 24 horas por dia, 7 dias por semana. Uma abordagem ingênua de copiar e restaurar exige horas de inatividade, o que é inaceitável para sistemas de produção. A prática recomendada para migração de bancos de dados usa replicação contínua de dados para manter a origem e o destino sincronizados enquanto o destino é validado e, em seguida, realiza uma breve transferência planejada, quando o tráfego é redirecionado para o novo banco de dados do Azure.
Azure Database Migration Service
O Azure Database Migration Service (DMS) é um serviço totalmente gerenciado que orquestra migrações online (com tempo de inatividade quase nulo) e offline (baseadas em tempo de inatividade) de mecanismos locais populares para serviços de banco de dados gerenciados do Azure. O DMS oferece suporte a fontes como SQL Server, MySQL, PostgreSQL, MongoDB e Oracle e a destinos como Azure SQL Database, Instância Gerenciada do Azure SQL, Azure Database for MySQL e Azure Cosmos DB. O serviço integra-se ao Data Migration Assistant (DMA) para verificações de compatibilidade anteriores à migração.
# Create a DMS instance
az dms create \
--service-name myDMS \
--resource-group myRG \
--location eastus \
--sku-name Premium_4vCores \
--vnet myVnet \
--subnet mySubnetAvaliação pré-migração com DMA
Antes de migrar o SQL Server, execute o Data Migration Assistant (DMA) no banco de dados de origem. O DMA identifica: problemas de compatibilidade (recursos usados no banco de dados que não têm suporte no destino Azure SQL), alterações incompatíveis, recursos preteridos e recomendações de desempenho. Ele gera um relatório HTML detalhado que prioriza os problemas por gravidade, para que sua equipe possa corrigi-los antes do início da janela de migração.
# Run DMA assessment from CLI (Windows only)
# DmaCmd.exe /AssessmentName='SQL2022toAzureSQL' \
# /AssessmentSourcePlatform='SqlOnPrem' \
# /AssessmentTargetPlatform='AzureSqlDatabase' \
# /AssessmentDatabases='Server=myServer;Initial Catalog=AdventureWorks;Integrated Security=true'Migração online versus offline
A migração offline deixa o banco de dados de origem indisponível durante toda a migração — uma opção aceitável para bancos de dados pequenos ou sistemas não críticos em que seja possível estabelecer uma janela de manutenção. A migração online usa a captura de dados de alterações (CDC) ou o envio do log de transações para replicar continuamente as alterações enquanto o novo banco de dados é carregado, reduzindo o tempo de inatividade apenas à etapa final de transferência. A migração online é recomendada para bancos de dados maiores que 1 GB ou com SLAs que exigem menos de 1 hora de inatividade.
Configurando um projeto de migração do DMS
Um projeto de migração do DMS especifica a conexão de origem (nome do servidor, autenticação e nomes dos bancos de dados), a conexão de destino (cadeia de conexão do Azure SQL) e o modo de migração (online ou offline). Você também seleciona quais bancos de dados e tabelas migrar. O DMS valida a conectividade antes de iniciar. O projeto de migração permanece no portal do Azure para que você possa monitorar o progresso, tentar novamente as tabelas que falharam e consultar logs detalhados de atividades.
# 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 eastusPrimeiro, migre o esquema
Sempre migre o esquema antes dos dados. Use o DMA ou o SQL Server Management Studio (SSMS) para gerar o script e implantar tabelas, exibições, procedimentos armazenados, funções e índices no Azure SQL Database de destino. Verifique se todos os objetos do esquema existem e são compilados sem erros antes de permitir que o DMS inicie a transferência de dados. Erros de esquema descobertos durante a migração podem corromper a execução da migração e obrigar você a reiniciá-la do zero.
# Generate schema scripts using sqlpackage
sqlpackage /Action:Script \
/SourceServerName:myOnPremServer \
/SourceDatabaseName:AdventureWorks \
/TargetServerName:mysqlserver.database.windows.net \
/TargetDatabaseName:AdventureWorksAzure \
/OutputPath:/tmp/schema.sqlCarga inicial de dados
O DMS executa uma carga completa de dados, lendo a tabela do banco de dados de origem por tabela e gravando as linhas no destino do Azure SQL usando inserção em massa. Durante a carga completa, o serviço processa tabelas grandes dividindo-as em lotes. Os índices no destino são desabilitados durante a carga para maximizar a vazão e reconstruídos posteriormente. Para bancos de dados muito grandes (na escala de TB), considere usar o Azure Data Factory ou exportações bacpac para pré-carregar os dados e reduzir o tempo de execução do DMS.
Captura de dados de alteração para sincronização online
Para migrações online, o DMS habilita o Change Data Capture (CDC) do SQL Server na origem para capturar as operações INSERT, UPDATE e DELETE que ocorrem enquanto a carga completa está em andamento. Quando a carga completa é concluída, o DMS reaplica essas alterações capturadas no destino, reduzindo gradualmente a diferença. Quando a latência cai para quase zero, o banco de dados está pronto para a mudança. O CDC exige que o SQL Server Agent esteja em execução e que o banco de dados de origem esteja no modo de recuperação completa.
-- 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;Mudança e validação
Quando o atraso do CDC é mínimo, inicie a mudança no portal do DMS. O DMS deixa de aceitar novos eventos do CDC, aplica as alterações restantes e marca a migração como concluída. Nesse momento, redirecione as cadeias de conexão da aplicação para o ponto de extremidade do Azure SQL. Execute consultas de validação de dados, comparando as contagens de linhas e os agregados de soma de verificação entre a origem e o destino para as tabelas críticas. Mantenha o banco de dados de origem no modo somente leitura por 24 a 48 horas após a mudança, caso seja necessário reverter a operação.
-- Validate row counts post-cutover
SELECT TABLE_NAME, TABLE_ROWS
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo'
ORDER BY TABLE_NAME;Otimização de desempenho após a migração
Após a migração, o Azure SQL Database pode apresentar um desempenho diferente do SQL Server local devido às diferenças nos caches de planos de consulta, nas estatísticas e no hardware. Execute o Database Experimentation Assistant (DEA) para reproduzir os rastreamentos da carga de trabalho no destino do Azure e comparar os planos de execução. Habilite o Automatic Tuning no Azure SQL para permitir que o serviço crie ou remova índices automaticamente e force planos de consulta sem regressões, melhorando o desempenho ao longo do tempo sem intervenção manual.
-- Enable Automatic Tuning on Azure SQL Database
ALTER DATABASE CURRENT SET AUTOMATIC_TUNING (
FORCE_LAST_GOOD_PLAN = ON,
CREATE_INDEX = ON,
DROP_INDEX = OFF
);Migração de outros mecanismos de banco de dados
O DMS também migra mecanismos de código aberto: MySQL para o Azure Database for MySQL usando o padrão mysqldump + replicação de binlog, e PostgreSQL para o Azure Database for PostgreSQL usando slots de replicação lógica. Para migrações de MongoDB para o Cosmos DB, use a API do Cosmos DB para MongoDB e o pipeline nativo mongodump / mongorestore ou o conector do MongoDB do Azure Data Factory para CDC incremental. Sempre teste a migração em uma cópia que não seja de produção antes de executá-la com dados reais.
# 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.sqlVerificação rápida
Teste sua compreensão dos conceitos do Microsoft Azure Fundamentals (AZ-900) apresentados nesta lição.
Recapitulação da lição
Nesta lição, você aprendeu que o Azure Database Migration Service orquestra migrações de bancos de dados online e offline, que a avaliação pré-migração com DMA identifica problemas de compatibilidade antes da janela de migração e que a captura de dados de alteração permite uma mudança com quase zero de tempo de inatividade para bancos de dados de produção. A seguir, vamos mudar o foco para a otimização dos custos do Azure.
Perguntas Frequentes
A aula “Práticas recomendadas para migração de bancos de dados” é grátis?
Sim — o texto completo de “Práticas recomendadas para migração de bancos de dados” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Azure Fundamentals, atualize para CoddyKit PRO. O curso de Azure Fundamentals inclui 4 aulas no total.
O que vou aprender em “Práticas recomendadas para migração de bancos de dados”?
Use o Azure Database Migration Service para migrar um banco de dados do SQL Server para o Azure SQL com tempo de inatividade mínimo e resolva problemas comuns de esquema e compatibilidade. Você pratica Azure Fundamentals com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Azure Fundamentals?
Nenhuma experiência prévia é necessária. Azure Fundamentals no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Práticas recomendadas para migração de bancos de dados”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Azure Fundamentals?
Sim. Cada aula de Azure Fundamentals inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Estrutura de migração dos 6 Rs
- Azure Migrate: descoberta e avaliação
- Rehospedagem com o Azure Migrate (lift and shift)
- Práticas recomendadas para migração de bancos de dados