Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Migre dados do PostgreSQL usando fontes de dados no ClickPipes

Beta

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.

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

Abra o console do ClickHouse Cloud e selecione seu serviço Managed Postgres.

Cartão do serviço Managed Postgres na lista de serviços do ClickHouse Cloud

Na barra lateral esquerda, clique em Fontes de dados.

Entrada Fontes de dados na barra lateral do serviço Managed Postgres

Clique em Iniciar importação.

Página Fontes de dados com o botão 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 de SSH necessários. 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.
Etapa 1: formulário de conexão com o banco de dados de origem com opções de método de ingestão

Clique em Próximo.

Migração automatizada de esquema

Etapa 2: migração automatizada de esquema com seletor de banco de dados de destino

Ao escolher essa opção, o ClickPipe extrairá automaticamente o esquema do seu banco de dados de origem e o aplicará ao serviço Managed Postgres durante a fase de Setup do ClickPipe, após sua criação.

Esse recurso pressupõe um banco de dados de destino vazio, pois extrai todos os objetos do banco de dados de origem, independentemente das tabelas que você selecionar posteriormente no assistente. Se já houver dados no banco de dados de destino ou se você quiser uma configuração mais personalizada, deverá optar pelo modo Manual.

Selecione o banco de dados de destino no menu suspenso ou clique em Criar um novo banco de dados para provisionar um.

Caixa de diálogo para criar um novo banco de dados Postgres

Monitoramento

Você pode acompanhar o andamento da migração de esquema na visualização de detalhes do ClickPipes. Os Logs indicarão o status da migração de esquema, e quaisquer erros encontrados também serão exibidos ali.

Este modo tem as seguintes limitações:

Migração manual de esquema

Caso você já tenha dados no banco de dados de destino ou queira uma configuração mais personalizada, em vez do ambiente limpo exigido pelo modo automatizado, selecione o modo Manual.

Passo 2: Migração manual de esquema com o comando de exportação pg_dump

Exporte o esquema do seu banco de dados

O assistente exibe um comando pg_dump preenchido previamente com os detalhes da conexão de origem. Execute-o em um terminal:

Etapa 2: comando pg_dump para exportação do esquema
pg_dump \
  -h <source_host> \
  -U <source_user> \
  -d <source_database> \
  --schema-only \
  -f pg.sql

Isso cria pg.sql no diretório atual.

Saída do terminal após executar pg_dump

Clique em Próximo.

Importe o esquema para 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 um.

O assistente exibe um comando psql para aplicar o dump do esquema ao seu serviço Managed Postgres. Execute-o em um terminal:

Etapa 3: comando psql para importação do esquema
psql \
  -h <target_host> \
  -p 5432 \
  -U <target_user> \
  -d <target_database> \
  -f pg.sql
Saída do terminal após executar a importação do esquema com psql

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ção Padrão Descrição
Intervalo de sincronização (segundos) 10 Com que frequência o slot de replicação é consultado
Threads paralelas para carga inicial 4 Número de threads para a fase de cópia em massa
Tamanho do lote de extração 100,000 Linhas obtidas por lote de replicação
Número de linhas por partição no snapshot 100000 Tamanho da partição para snapshots de tabelas grandes
Número de tabelas em paralelo no snapshot 1 Tabelas capturadas em snapshot simultaneamente
Etapa 4: formulário de configurações de ingestão com publication e opções avançadas de replicação

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.

Etapa 5: seletor de tabelas agrupadas por esquema com o botão Criar migração

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.

Lista de fontes de dados mostrando uma migração 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 a defasagem da replicação e a taxa de transferência quando o CDC começar.

Tela de detalhes da migração mostrando estatísticas da carga inicial por tabela

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

Navigation