Migrations de larga escala: gh-ost
Em tabelas grandes, uma mudança de schema segura locks por muito mais tempo, e isso pode parar o tráfego. O curso trata dos modos de lock do Postgres e da fila de locks, do subconjunto de mudanças seguras (índices concorrentes, constraints NOT VALID) e do uso de lock_timeout e strong_migrations como proteção. Mostra como o gh-ost copia uma tabela MySQL para uma tabela-sombra lendo o log binário e como rodá-lo com throttling e cut-over adiado. Fecha com pg-osc, expandir e contrair, preenchimento em lotes e um runbook de migration.
O que você vai aprender
- ✓Modos de lock do Postgres, duração do lock e a fila de locks
- ✓Reescritas sem bloqueio para índices, constraints e NOT NULL, com a strong_migrations no CI
- ✓Como o gh-ost usa uma tabela-sombra e o log binário do MySQL
- ✓Rodar o gh-ost com throttling, tamanho de lote e cut-over adiado
- ✓Expandir e contrair e preenchimento de dados em lotes no Postgres
- ✓Um runbook para ensaiar, acompanhar e abortar uma migration
A migration que travou a tabela
Um deploy sai às 14:02. Ele leva uma migration:
Ler a aula completa grátis →Currículo
7 aulasA migration que travou a tabela
Um índice numa tabela de 240 milhões de linhas travou o checkout por onze minutos sem nenhum erro.
Modos de lock, e a fila atrás deles
ShareLock e AccessExclusiveLock, a diferença entre rigidez e duração do lock, a fila de locks e o lock_timeout.
O subconjunto seguro: mudanças que nunca bloqueiam
Índices concorrentes, constraints NOT VALID, SET NOT NULL sem varredura, mudanças que continuam caras e a strong_migrations no CI.
Tabelas sombra: como o gh-ost funciona
Como funciona a cópia com tabela-sombra, o custo dos triggers do pt-online-schema-change e a leitura do log binário pelo gh-ost.
Rodando o gh-ost com segurança
Ensaio sem --execute, throttling por carga e atraso, tamanho do lote, cut-over adiado, hooks, socket de controle e limitações.
Postgres, pg-osc, e expand/contract
O pg-osc no Postgres, os cinco passos de expandir e contrair, remoção segura de colunas e preenchimento em lotes.
O runbook de migration
Um runbook com tamanho da tabela, locks, ensaio num snapshot, queries de monitoramento, como abortar e como terminar a contração.