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
- Acesso ao seu banco de dados PostgreSQL de origem com um usuário que tenha privilégios de replicação. Siga o guia de configuração correspondente à sua origem:
- Amazon RDS Postgres
- Amazon Aurora Postgres
- Supabase Postgres
- Google Cloud SQL Postgres
- Azure Flexible Server for Postgres
- Neon Postgres
- Crunchy Bridge Postgres
- TimescaleDB
- Origem genérica do Postgres para qualquer outro provedor ou instância auto-hospedada
- Um serviço ClickHouse Managed Postgres como destino da migração. Se você ainda não tiver um, consulte o guia de início rápido.
pg_dumpepsqlinstalados na sua máquina local. Ambos vêm com as ferramentas padrão do cliente PostgreSQL.
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, comoDROP COLUMNeALTER 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.

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 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.

Clique em Próximo.
Migração automatizada de esquema

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.

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:
- Pipes que usam tunelamento SSH não podem usar a migração automatizada de esquema. O esquema deve ser exportado e importado manualmente.
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.

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:

pg_dump \
-h <source_host> \
-U <source_user> \
-d <source_database> \
--schema-only \
-f pg.sqlIsso cria pg.sql no diretório atual.

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:

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çã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 |

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 a defasagem 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>');