Migração de Banco de Dados
Migração de banco de dados é um arquivo versionado que descreve uma alteração na estrutura ou nos dados de um banco, permitindo aplicar e reverter mudanças de forma controlada.
Migração de banco de dados é o mecanismo que permite evoluir o schema do banco junto com o código da aplicação. Toda vez que você precisa adicionar uma coluna, criar uma tabela ou alterar um índice, uma migration registra essa mudança como um arquivo versionado.
Isso resolve um problema prático: sem migrations, cada desenvolvedor precisa lembrar de aplicar manualmente as alterações no banco local, no staging e em produção. Com migrations, o processo é parte do deploy e é rastreável no controle de versão.
Rollback é a parte que salva
Além de aplicar mudanças (up), uma boa migration define como desfazê-las (down). Se uma alteração em produção causar problema, é possível reverter a migration sem perder o controle do estado do banco.
ORMs como Prisma, Sequelize e Flyway gerenciam migrations automaticamente, mantendo um registro de quais já foram aplicadas em cada ambiente.
Como funciona na prática
- O desenvolvedor cria um arquivo de migration descrevendo a alteração desejada
- O arquivo define o método `up` para aplicar e `down` para reverter
- O ORM ou ferramenta de migration rastreia quais arquivos já foram executados
- No deploy, as migrations pendentes são aplicadas automaticamente
- O histórico de migrations funciona como documentação da evolução do banco
Exemplo Prático
A equipe precisa adicionar a coluna `last_login` na tabela `users`. Uma migration é criada com `ALTER TABLE users ADD COLUMN last_login TIMESTAMP`. No próximo deploy, ela é aplicada em staging e produção. Se algo der errado, o `down` executa `ALTER TABLE users DROP COLUMN last_login`.
Por que isso é importante?
Migração de banco de dados importa porque o banco de dados evolui junto com o código. Sem um sistema de migrations, alterações de schema viram processos manuais e propensos a erro, especialmente em times com múltiplos desenvolvedores.
Perguntas Frequentes (FAQ) sobre Migração de Banco de Dados
Migration e backup são a mesma coisa?
Não. Backup preserva os dados. Migration gerencia as mudanças na estrutura do banco. Os dois são necessários: backup para recuperação de dados, migration para controle de evolução do schema.
WordPress tem sistema de migrations?
O WordPress usa `dbDelta()` para atualizar estruturas de banco em atualizações do core e plugins, mas não é um sistema de migrations versionado como os usados em frameworks modernos. Para projetos WordPress mais complexos, plugins como WP Migrate DB cuidam de sincronização de dados entre ambientes.