Pular para o conteúdo principal
O ClickHouse Cloud agora oferece o ClickPipes para migrar seu banco de dados PostgreSQL externo para um serviço Managed Postgres. Essa integração nativa oferece uma experiência simplificada para conectar-se ao banco de dados de origem, exportar o esquema, importá-lo para o Managed Postgres e configurar a replicação contínua.

Pré-requisitos

Considerações antes da migração

  • Propagação de DDL: a replicação contínua (CDC) captura operações de DML e ADD COLUMN. Outras alterações de DDL, como DROP COLUMN e ALTER COLUMN, não são propagadas e devem ser aplicadas manualmente no banco de destino.
Se você encontrar problemas durante a migração, consulte o FAQ de Migrações do Managed Postgres para ver os erros e as soluções mais comuns.

Etapa 1: Conecte-se ao seu banco de dados de origem

Abra o console do ClickHouse Cloud e selecione seu serviço Managed Postgres. Na barra lateral esquerda, clique em Fontes de dados. Clique em Iniciar importação. Preencha os detalhes da conexão com seu banco de dados PostgreSQL de origem: host, porta, nome de usuário, senha e nome do banco de dados. Ative TLS se a origem exigir. Se você precisar de uma conexão privada com seu banco de dados de origem, poderá optar por tunelamento SSH e fornecer os detalhes necessários de SSH. Isso permite que a migração se conecte com segurança a bancos de dados que não estão acessíveis publicamente. Escolha um método de ingestão:
  • Carga inicial + CDC — copia os dados existentes e depois mantém o destino sincronizado com as alterações em andamento.
  • Somente carga inicial — cópia única, sem replicação contínua.
  • Somente CDC — pula a cópia inicial e replica apenas as novas alterações a partir deste ponto.
Clique em próximo.

Etapa 2: Exporte o esquema do seu banco de dados

O assistente exibe um comando pg_dump já preenchido com os detalhes da conexão de origem. Execute-o em um terminal:
pg_dump \
  -h <source_host> \
  -U <source_user> \
  -d <source_database> \
  --schema-only \
  -f pg.sql
Isso cria pg.sql no diretório atual. Clique em próximo.

Etapa 3: Importe o esquema para o seu serviço Managed Postgres

Selecione o banco de dados de destino na lista suspensa ou clique em Criar um novo banco de dados para provisionar outro. O assistente exibe um comando psql para aplicar o dump do esquema ao seu serviço Managed Postgres. Execute-o em um terminal:
psql \
  -h <target_host> \
  -p 5432 \
  -U <target_user> \
  -d <target_database> \
  -f pg.sql
Clique em Próximo.

Etapa 4: Definir as configurações de ingestão

Especifique a publication a ser usada para a replicação lógica. Se você deixar esse campo em branco, uma publication será criada automaticamente. Expanda Configurações avançadas de replicação para ajustar a taxa de transferência:
ConfiguraçãoPadrãoDescrição
Intervalo de sincronização (segundos)10Com que frequência o slot de replicação é consultado
Threads paralelas para carga inicial4Número de threads para a fase de cópia em massa
Tamanho do lote de extração100,000Linhas obtidas por lote de replicação
Número de linhas por partição no snapshot100000Tamanho da partição para snapshots de tabelas grandes
Número de tabelas em paralelo no snapshot1Tabelas capturadas em snapshot simultaneamente
Clique em Próximo.

Etapa 5: Selecione as tabelas

Selecione as tabelas que você quer replicar. As tabelas são agrupadas por esquema. Selecione tabelas individuais ou expanda um esquema para selecionar todas. Clique em Criar migração.

Monitore a migração

Após criar a migração, ela aparecerá listada em Fontes de dados com o status Em execução. Clique na migração para abrir a tela de detalhes. A aba Tabelas mostra o progresso da carga inicial de cada tabela, incluindo linhas processadas, partições e o tempo médio por partição. A aba Métricas mostra o atraso da replicação e a taxa de transferência quando o CDC começar.

Tarefas pós-migração

Quando a carga inicial for concluída e, se estiver usando CDC, a defasagem da replicação estiver próxima de zero: Valide a contagem de linhas. Faça uma verificação pontual das tabelas críticas na origem e no destino antes de redirecionar o tráfego:
SELECT COUNT(*) FROM public.orders;
Interrompa as escritas na origem. Pause as escritas da aplicação. Para impor o modo somente leitura durante a transição:
ALTER DATABASE <source_db> SET default_transaction_read_only = on;
Confirme se a replicação está sincronizada. Compare a linha mais recente na origem e no destino:
-- Execute na origem e no destino
SELECT MAX(id), MAX(updated_at) FROM public.orders;
Redefina as sequências. Alinhe-as aos valores máximos atuais de cada tabela:
DO $$
DECLARE r RECORD;
BEGIN
    FOR r IN
        SELECT
            n.nspname AS schema_name,
            c.relname AS table_name,
            a.attname AS column_name,
            pg_get_serial_sequence(format('%I.%I', n.nspname, c.relname), a.attname) AS seq_name
        FROM pg_class c
        JOIN pg_namespace n ON n.oid = c.relnamespace
        JOIN pg_attribute a ON a.attrelid = c.oid
        WHERE c.relkind = 'r'
            AND a.attnum > 0
            AND NOT a.attisdropped
            AND n.nspname NOT IN ('pg_catalog', 'information_schema')
    LOOP
        IF r.seq_name IS NOT NULL THEN
            EXECUTE format(
                'SELECT setval(%L, COALESCE((SELECT MAX(%I) FROM %I.%I), 0) + 1, false)',
                r.seq_name, r.column_name, r.schema_name, r.table_name
            );
        END IF;
    END LOOP;
END $$;
Redirecione o tráfego da aplicação. Aponte leituras e gravações para seu serviço Managed Postgres e monitore erros, violações de restrições e a integridade da replicação. Faça a limpeza. Depois de redirecionar o tráfego e confirmar que o novo serviço está funcionando corretamente, exclua a migração em fonte de dados. Se você usou CDC, exclua o slot de replicação da origem para liberar recursos:
SELECT pg_drop_replication_slot('<slot_name>');

Próximos passos

Última modificação em 10 de junho de 2026