Pular para o conteúdo principal

Migrações PostgreSQL sem Downtime em Produção

Como alterar um schema PostgreSQL em produção sem tirar a aplicação do ar: o padrão expand-and-contract, DDL online com CONCURRENTLY e NOT VALID, backfills em lote e o monitoramento de locks que permite fazer isso com confiança.

15itens
Voltar para todos os checklists
Database OperationsAdvanced
postgresqldatabase-migrationszero-downtimeddlschema
Progresso0 / 15 concluídos
0%

Planeje toda mudança como expand, migrate e depois contract

Crítico

Defina lock_timeout em toda migração para que um DDL travado falhe rápido

Crítico

Adicione colunas sem reescrever a tabela inteira

Construa índices com CREATE INDEX CONCURRENTLY

Crítico

Adicione NOT NULL com uma constraint CHECK, não de uma vez só

Crítico

Adicione foreign keys em duas etapas com NOT VALID

Mude o tipo de uma coluna adicionando uma nova coluna, não com ALTER TYPE

Faça o backfill dos dados em pequenos lotes, nunca um UPDATE gigante

Crítico

Faça a aplicação escrever nas formas antiga e nova durante a transição

Crítico

Nunca renomeie uma coluna ou tabela ativa no lugar

Descarte colunas e tabelas só depois que nada mais as lê

Crítico

Use uma ferramenta de migração que consiga rodar instruções fora de uma transação

Rehearse the migration on a production-sized copy and time the locks

Watch locks and blocking queries while the migration runs

Crítico

Watch replication lag and dead tuples during big backfills

Sponsored
Carbon Ads

Mais checklists

Also worth your time on this topic