Migração online de PostgreSQL
Para bancos grandes ou que não podem parar, a migração online copia um PostgreSQL externo para um banco gerenciado do ambiente por replicação lógica: o esquema é copiado, a carga inicial roda em paralelo e, depois, cada escrita da origem chega ao destino em segundos. Quando o atraso estiver perto de zero, você para as escritas na origem e faz o corte.
Disponível nos planos com imports.liveMigration e restrita a quem tem papel Admin no projeto.
Preparar a origem
Na origem (PostgreSQL 10 ou mais novo, acessível pela internet com TLS):
-- postgresql.conf: wal_level = logical (exige reinício na maioria dos provedores)
CREATE ROLE replicador WITH LOGIN REPLICATION PASSWORD '...';
GRANT SELECT ON ALL TABLES IN SCHEMA public TO replicador;
CREATE PUBLICATION atlas_pub FOR ALL TABLES;
Libere o acesso da plataforma à porta do banco. Tabelas sem chave primária só recebem inserções; a verificação prévia avisa quais são.
Criar a migração
Na aba Migração online do banco de destino, informe host, porta, banco, usuário, senha e o nome da publicação (a senha vai direto para o cofre da organização e é apagada no fim). A plataforma roda as verificações prévias: versão, wal_level, publicação, permissões, extensões e tabelas sem chave primária. Erros bloqueiam; avisos precisam ser aceitos.
Pela CLI:
echo "$SENHA" | coda migrate pg create --node db --source-host pg.exemplo.com --database loja --user replicador --publication atlas_pub --password-stdin
coda migrate pg status <migração> --node db
Acompanhar e fazer o corte
Depois de iniciada, a migração passa por cópia do esquema, carga inicial e replicação contínua. A aba mostra o atraso em bytes e em segundos; se ele ficar alto por 30 minutos, você recebe um aviso.
Para o corte:
- Pare as escritas na origem (modo de manutenção da aplicação antiga).
- Clique em Fazer o corte e confirme que as escritas pararam (
coda migrate pg cutover <migração> --node db --wait). - A plataforma espera o atraso chegar a zero (até 5 minutos), sincroniza as sequências e remove a assinatura.
- Aponte a aplicação para o banco gerenciado e faça a troca de DNS.
Se o atraso não zerar no prazo, o corte é desfeito e a replicação continua. Cancelar remove a assinatura e a credencial da origem; os dados já copiados ficam no destino.