Migração MySQL 5.7 para 8.0 no Azure: Guia completo

Publicado em Fevereiro 2026 | Por Okeh | ... visualizações

⚠️ Aviso importante: A Microsoft cobrará $0.07 por vCore/hora por extended support do MySQL 5.7 a partir de 1º de abril de 2026. Você tem até 31 de março de 2026 para fazer a migração.

Se você utiliza Azure Database for MySQL Flexible Server com a versão 5.7, recebeu uma notificação da Microsoft sobre a necessidade urgente de atualização. A versão 5.7 atingiu o fim do suporte e, para continuar utilizando-a, você precisará pagar uma taxa adicional. Este guia apresenta tudo que você precisa saber para planejar e executar essa migração com sucesso.

Por que a mudança é urgente?

A Microsoft implementou uma política de cobranças para versões não suportadas:

A recomendação clara da Microsoft é: atualize para MySQL 8.0 antes de 31 de março de 2026 para evitar cobranças.

Principais diferenças: MySQL 5.7 vs 8.0

✅ Melhorias no MySQL 8.0

1. Performance e Velocidade

2. Segurança Aprimorada

3. Funcionalidades Novas

4. Compatibilidade e Conformidade

⚠️ Funções Removidas no MySQL 8.0:

RAND() - Não pode ser usado em índices gerados. Alternativa: usar UUIDs ou sequências.

-- ❌ MySQL 5.7 - Funciona
CREATE INDEX idx_random ON tabela(RAND());

-- ✅ MySQL 8.0 - Use UUID
CREATE INDEX idx_id ON tabela(id);

SCHEMA() e DATABASE() - Comportamento mudou com contextos diferentes.

-- MySQL 5.7 - Retornava schema atual
SELECT SCHEMA();

-- MySQL 8.0 - Pode retornar NULL em certos contextos
-- Recomendado: USE database_name ou database().schema_name

SQL_CALC_FOUND_ROWS e FOUND_ROWS() - Removidas completamente.

-- ❌ MySQL 5.7 - Funciona
SELECT SQL_CALC_FOUND_ROWS * FROM usuarios LIMIT 10;
SELECT FOUND_ROWS(); -- Retorna total de registros

-- ✅ MySQL 8.0 - Use duas queries
SELECT COUNT(*) as total FROM usuarios;
SELECT * FROM usuarios LIMIT 10;

INTO OUTFILE/INFILE - Restrições de segurança aumentadas.

-- MySQL 5.7 - Mais permissivo
SELECT * INTO OUTFILE '/tmp/usuarios.txt' FROM usuarios;

-- MySQL 8.0 - Requer variável secure_file_priv configurada
-- Recomendado: usar ferramentas externas como mysqldump

GROUP BY sem agregação - Agora obrigatório usar ONLY_FULL_GROUP_BY.

-- ❌ MySQL 5.7 - Funciona (comportamento indefinido)
SELECT id, nome, email FROM usuarios GROUP BY id;

-- ✅ MySQL 8.0 - Erro! Deve agregar ou usar GROUP_CONCAT
SELECT id, GROUP_CONCAT(nome), GROUP_CONCAT(email) 
FROM usuarios GROUP BY id;

📚 Referências Oficiais:

Feature MySQL 5.7 MySQL 8.0
Performance InnoDB Base +50% melhor
Window Functions
Common Table Expressions
Criptografia padrão MySQL Native SHA2
Suporte Microsoft ❌ Pago ✅ Gratuito

Principais Desafios da Migração

🔴 Desafio 1: Incompatibilidades de Código SQL

Problema: MySQL 8.0 removeu suporte para certos sintaxes e comportamentos do 5.7.

Exemplos comuns:

Solução: Teste todas as queries em um ambiente de staging antes da migração. Utilize ferramentas como MySQL Workbench para identificar problemas.

🔴 Desafio 2: Mudanças em Funções e Variáveis

Problema: Algumas funções foram removidas ou tiveram comportamento alterado.

Exemplos:

Solução: Revise a documentação oficial de "deprecated features" e adapte seu código incrementalmente.

🔴 Desafio 3: Performance Inicial

Problema: Após atualizar, o MySQL 8.0 pode executar queries de forma diferente (às vezes mais lento no início).

Causa: O Query Optimizer do 8.0 é mais agressivo e pode fazer escolhas diferentes no execution plan.

Solução:

🔴 Desafio 4: Downtime e Dados em Movimento

Problema: A migração requer um período onde o banco estará em manutenção ou com acesso limitado.

Impacto: Aplicações conectadas podem desconectar durante o upgrade.

Solução:

🔴 Desafio 5: Autenticação e Segurança

Problema: O MySQL 8.0 usa SHA2 como padrão (mais seguro) em vez de MySQL Native Password.

Impacto: Aplicações antigas podem ter dificuldade em conectar.

Solução:

Passo a Passo: Como Fazer a Migração

Passo 1: Backup Completo

Primeiro, faça um backup completo do seu banco atual:

az mysql flexible-server backup create \
  --resource-group <seu-rg> \
  --server-name <seu-servidor> \
  --backup-name mysql57-backup-$(date +%Y%m%d)

Passo 2: Teste em Ambiente de Staging

Clone seu servidor Azure para um ambiente de teste:

az mysql flexible-server create \
  --resource-group <seu-rg> \
  --name <seu-servidor-test> \
  --restore-from-server <seu-servidor> \
  --version 8.0

Passo 3: Validar Compatibilidade

Execute seus testes de aplicação contra o servidor MySQL 8.0:

Passo 4: Atualizar Servidor Produção

Após validação bem-sucedida, atualize seu servidor em produção:

az mysql flexible-server update \
  --resource-group <seu-rg> \
  --name <seu-servidor> \
  --version 8.0

Passo 5: Otimização Pós-Migração

Após a atualização, execute:

-- Conectar ao seu servidor MySQL 8.0
mysql -h <seu-servidor>.mysql.database.azure.com -u <seu-usuario> -p

-- Executar otimizações
OPTIMIZE TABLE sua_tabela;
ANALYZE TABLE sua_tabela;

-- Verificar status
SHOW ENGINE INNODB STATUS;

Checklist: Antes da Migração

  • ☐ Identifique a data de vencimento (31 de março de 2026)
  • ☐ Faça backup completo do banco em produção
  • ☐ Crie servidor de staging com MySQL 8.0
  • ☐ Execute suite de testes da aplicação
  • ☐ Verifique compatibilidade de queries no log de erros
  • ☐ Atualize drivers/conectores (se necessário)
  • ☐ Planeje janela de manutenção
  • ☐ Comunique com stakeholders sobre o downtime estimado
  • ☐ Prepare rollback plan (restaurar backup)
  • ☐ Realize dry-run completo antes do dia D
  • ☐ Monitore após migração (performance, erros, conectividade)

Impacto Financeiro de Não Migrar

Se você não migrar até 31 de março de 2026, as cobranças começarão:

Configuração Custo/Mês (USD) Custo/Ano (USD) Custo/Ano (BRL)*
1 vCore ~$50 ~$600 ~R$ 3.000
2 vCores ~$100 ~$1.200 ~R$ 6.000
4 vCores ~$200 ~$2.400 ~R$ 12.000

*Conversão aproximada (1 USD = R$ 5,00). Preços podem variar por região. Consulte Azure Pricing para valores exatos.

Conclusão

A migração de MySQL 5.7 para 8.0 no Azure é urgente e necessária até 31 de março de 2026. As boas notícias são:

Nossa recomendação: Comece o planejamento imediatamente. Se sua equipe não tem experiência com migrações de banco de dados, considere contratar um especialista para evitar problemas inesperados.

💡 Dica: Se você é cliente da Okeh, entre em contato conosco! Oferecemos serviços especializados em migrações de infraestrutura Azure, incluindo banco de dados. Podemos ajudá-lo a fazer essa transição com segurança e eficiência.

Referências