Pular para o conteúdo
Tecnologia

Migrations versionam schema de database. Track mudanças, rollback, sync entre ambientes. Essencial para CI/CD de databases.

Conceitos Principais

Version Control

Cada migration é arquivo. Timestamp ou sequence number. Git tracked. Ordem garantida.

Up/Down

Up: aplica mudança. Down: reverte. Rollback possível. Nem todas changes são reversíveis.

Migration State

Tabela de metadados. Rastreia applied migrations. Evita re-run. Detecta drift.

Zero-Downtime

Migrations não podem quebrar app rodando. Additive changes first. Remove em migration futura.

Passo a Passo

  1. Setup Knex: npm install knex. knex init. knexfile.js config: development, staging, production. knex migrate:make create_users.
  2. Create Migration: exports.up = (knex) => knex.schema.createTable("users", (table) => { table.increments("id"); table.string("email").unique(); }); exports.down = (knex) => knex.schema.dropTable("users");
  3. Run Migrations: knex migrate:latest. Apply all pending. CI/CD: auto-run before deploy. Staging primeiro.
  4. Rollback: knex migrate:rollback. Reverte last batch. Teste rollback em staging. Data loss possível.
  5. Zero-Downtime Pattern: Migration 1: ADD column (nullable). Deploy code. Migration 2: Populate column. Migration 3: Make NOT NULL. Migration 4: Remove old column.

Boas Praticas

Recomendacoes

• Migrations pequenas e focadas

• Teste em staging primeiro

• Rollback sempre testado

• Nunca edite migrations aplicadas

• Zero-downtime: additive first

• Backup antes de migration

• Migrations em CI/CD

Erros Comuns

Evite estes erros

• Editar migration aplicada

• Migration sem down

• Não testar rollback

• Breaking change sem estratégia

• Migrations manuais em produção

• Sem backup

Checklist

  • Migration tool configurado
  • Primeira migration criada
  • Up/down testados
  • Rollback funciona
  • CI/CD integrado
  • Zero-downtime strategy definida