Planejador de Migração de Schema sem Downtime
Planeje um expand-migrate-contract com veredito de lock, backfill e ponto de aborto declarado.
Por Os Melhores Prompts
Categoria: Bancos de dados
O que ele faz
Planeja toda mudança de schema como uma sequência expand-migrate-contract e assume que código antigo e novo vão rodar juntos por horas. Dá um veredito de lock e rewrite para cada comando DDL no seu engine e versão exatos — ADD COLUMN no Postgres com default volátil vs constante, NOT NULL via NOT VALID e depois VALIDATE, exceções dos algoritmos de online DDL do MySQL, limites de edição do rebuild online no SQL Server — e considera a fila de locks, em que um ACCESS EXCLUSIVE curto atrás de uma query longa bloqueia tudo que vem depois. O backfill é em lotes, com throttle e retomável.
Use quando
- Uma tabela grande que não pode ser travada no horário comercial
- Adicionar NOT NULL, mudar tipo de coluna ou renomear com segurança
- Rolling deploy com duas versões de código na mesma tabela
- Escolher entre DDL nativo, gh-ost e pt-online-schema-change
- Migrações que exigem ponto de aborto declarado antes de começar
O que você recebe
- Veredito de lock e rewrite por comando DDL no seu tamanho de tabela
- Passos de expand-migrate-contract com deploy e reversibilidade
- Script de backfill com tamanho de lote, throttle e checagem de lag
- Guardrails de lock_timeout e statement timeout e query de bloqueio
- Verificação por passo e o ponto em que o rollback deixa de existir
Como usar
- Cole o DDL atual e o alvo, mais a mudança semântica, em {{current_and_target_schema}}.
- Informe em {{database_engine}} engine, versão, edição e topologia de HA, porque o veredito de lock depende da versão.
- Preencha {{table_scale}} com contagem de linhas, tamanho em disco, número e tamanho dos índices, taxa de escrita e a query mais longa que roda contra a tabela — é ela que transforma um lock de 50 ms em indisponibilidade.
- Descreva em {{application_topology}} quais serviços e versões leem ou escrevem na tabela, o mecanismo de deploy, o ORM e o pooler, e em {{availability_constraints}} a duração de lock aceitável, o teto de replication lag e o statement timeout.
- Execute os passos na ordem dada com lock_timeout definido antes de cada DDL e pare no ponto de aborto declarado em vez de improvisar.
Tags: migration, ddl, zero-downtime, postgres, mysql, gh-ost, expand-contract
Preço: 10.00 BRL