Pular para o conteúdo principal

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:

  1. Pare as escritas na origem (modo de manutenção da aplicação antiga).
  2. Clique em Fazer o corte e confirme que as escritas pararam (coda migrate pg cutover <migração> --node db --wait).
  3. A plataforma espera o atraso chegar a zero (até 5 minutos), sincroniza as sequências e remove a assinatura.
  4. 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.