A migração, passo a passo
Uma migração é uma sequência de passos reversíveis com uma verificação depois de cada um. Quando uma verificação não chega a um veredito, a execução diz isso em vez de chamar de sucesso.
Os passos
- Ponto de restauração— tomado no destino antes de qualquer escrita.
- Extensões— instaladas primeiro, porque o schema depende delas.
- Schema— todos os schemas do projeto, com o search path da origem, para os tipos próprios se resolverem.
- Autenticação— usuários e identidades. Os hashes de senha vão junto quando o formato é portável; quando não é, isso fica registrado como limitação, não contornado.
- Dados— o conteúdo das tabelas, com contagem de linhas e conteúdo comparados depois.
- Storage— buckets e objetos, com caminho, tipo, tamanho, dono e políticas de acesso conferidos, e os bytes comparados.
Quando algo falha
O passo é repetido onde repetir é seguro. Se ainda falhar, os passos concluídos são desfeitos em ordem inversa e o destino volta ao ponto de restauração. A execução é registrada como compensada — não como sucesso com nota de rodapé.
Quando você cancela
O passo em andamento termina, a execução para e o destino volta ao ponto de restauração. Interromper uma cópia no meio deixaria um estado que ninguém descreveu, então o motor não oferece isso.
Limites honestos
O que foi medido
- Verificado contra um projeto hospedado real, no laboratório: schema, extensões, usuários de autenticação, dados das tabelas e arquivos, com 11 verificações aprovadas.
- Um processo parado no meio retomou do seu diário e terminou sem refazer trabalho concluído.
O que não foi
- Sessões ativas. Elas não migram — os tokens pertencem à plataforma antiga.
- Plataformas além da medida. Cada origem é um conector, e cada conector é uma medição própria.
- Migrations que dependem de dados que só existem no banco de origem podem precisar de adaptação antes de rodar; o plano as aponta.
Teste antes num destino descartável
Um piloto começa com um ensaio contra um destino descartável, nunca contra o sistema do qual você depende.