📝 BLOG

Migração de Banco de Dados: Mudanças de Schema e Deploy sem Downtime

Migração de banco de dados é o processo de aplicar mudanças de schema de forma segura e controlada. Este guia cobre as estratégias de migração, o deploy sem downtime e os planos de rollback.

Atualizado em:

Preparado por: Gsetsoft

Migração de Banco de Dados: Mudanças de Schema e Deploy sem Downtime

O que é Migração de Banco de Dados?

Migração de banco de dados é um processo controlado utilizado para mudar o schema do banco de dados (estruturas de tabelas, índices, restrições).

Mudanças de schema: Adicionar nova tabela, adicionar/modificar/excluir coluna, adicionar índice, adicionar foreign key, mudar tipo de dado.

Riscos: Perda de dados, downtime, degradação de desempenho, incompatibilidade para trás.

Objetivo: Aplicar mudanças de schema de forma segura, repetível e reversível.

Ferramentas de Migração

Flyway: Ferramenta de migração baseada em SQL. Arquivos de migração versionados (V1__create_users.sql). Suporte de Java, Node.js, CLI.

Liquibase: Changelog em formato XML/YAML/JSON/SQL. Suporte de rollback, geração de diff, comparação de bancos de dados.

Prisma Migrate: Integrado com Prisma ORM. Gera automaticamente a migração a partir de schema.prisma.

Knex.js: Ferramenta de migração de Node.js. Arquivos de migração em JavaScript. Funções up e down.

Django/ActiveRecord: Ferramentas de migração integradas no framework. Cria automaticamente a migração a partir de mudanças no modelo.

Estratégias de Migração sem Downtime

Expand and Contract (Parallel Change): 1) Adicionar nova coluna/tabela (expand), 2) Atualizar código (suportar coluna nova e antiga), 3) Remover coluna antiga (contract).

Mudanças compatíveis para trás: Adicionar nova coluna (nullable), adicionar nova tabela, adicionar novo índice. Essas mudanças não requerem downtime.

Mudanças breaking: Exclusão de coluna, mudança de tipo de coluna, rename. Essas mudanças devem ser feitas com o padrão expand-contract.

Feature flags: Coloque o novo schema atrás de feature flag. Reduza o risco com rollout gradual.

Blue-green deployment: Teste o novo schema em ambiente paralelo. Mude o tráfego. Volte ao ambiente anterior se houver problema.

Migração de Dados

Backfill: Faça com que os dados existentes sejam compatíveis com o novo schema. Processe grandes conjuntos de dados com processamento em lote.

Dual write: Escreva tanto no schema antigo quanto no novo. Mantenha a consistência dos dados durante o período de transição.

Validação de dados: Verifique a integridade dos dados após a migração. Contagem de linhas, checksum, comparação de amostra.

Desempenho: A migração em tabelas grandes cria carga de lock e I/O. Execute durante horas de baixo tráfego. Use processamento em chunks.

Plano de Rollback

Down migration: Escreva a down migration correspondente (rollback) para cada up migration. Flyway, Liquibase suportam rollback.

Backup: Faça um backup completo antes da migração. Tenha capacidade de point-in-time recovery (PITR).

Testes: Teste a migração no ambiente de staging. Use o mesmo volume de dados e schema da produção.

Monitoramento: Monitore o desempenho das consultas e a taxa de erro após a migração. Faça rollback se houver desvio anormal.

Comunicação: Compartilhe o plano de migração com a equipe. Defina a janela de manutenção.

Melhores Práticas

Controle de versão: Rastreie os arquivos de migração com Git. Cada migração deve ser atômica (uma única mudança).

Idempotência: Executar a migração várias vezes deve produzir o mesmo resultado. Use IF NOT EXISTS, IF EXISTS.

Migrações pequenas: Divida grandes mudanças em migrações pequenas. Cada migração deve ser implantável independentemente.

Code review: Passe os arquivos de migração pelo code review. Mudanças de schema são críticas e difíceis de reverter.

Documentação: Documente o propósito e o impacto de cada migração. Indique claramente as mudanças breaking.

Sua escolha de privacidade

Cookies essenciais permitem segurança e sessões. Contamos visitas básicas; com sua permissão ativamos análises adicionais. Política de Cookies