> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Migre dados do PostgreSQL usando fontes de dados no ClickPipes

> Aprenda a migrar seu banco de dados PostgreSQL para o ClickHouse Managed Postgres usando ClickPipes.

export const Image = ({img, alt, size = "lg", background}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  const backgroundColor = background === "white" ? "white" : background === "black" ? "rgb(31 31 28)" : undefined;
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} style={{
    backgroundColor
  }} />
      </Frame>
    </div>;
};

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <span>Beta</span>
            </a>;
  }
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>Recurso beta</span>
        </a>;
};

<BetaBadge link="https://clickhouse.com/cloud/postgres" galaxyTrack={true} galaxyEvent="docs.managed-postgres.migration-guide-clickhouse-cloud-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.

<div id="prerequisites">
  ## Pré-requisitos
</div>

* 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](/pt-BR/integrations/clickpipes/postgres/source/rds)
  * [Amazon Aurora Postgres](/pt-BR/integrations/clickpipes/postgres/source/aurora)
  * [Supabase Postgres](/pt-BR/integrations/clickpipes/postgres/source/supabase)
  * [Google Cloud SQL Postgres](/pt-BR/integrations/clickpipes/postgres/source/google-cloudsql)
  * [Azure Flexible Server for Postgres](/pt-BR/integrations/clickpipes/postgres/source/azure-flexible-server-postgres)
  * [Neon Postgres](/pt-BR/integrations/clickpipes/postgres/source/neon-postgres)
  * [Crunchy Bridge Postgres](/pt-BR/integrations/clickpipes/postgres/source/crunchy-postgres)
  * [TimescaleDB](/pt-BR/integrations/clickpipes/postgres/source/timescale)
  * [Origem genérica do Postgres](/pt-BR/integrations/clickpipes/postgres/source/generic) 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](/pt-BR/products/managed-postgres/quickstart).
* `pg_dump` e `psql` instalados na sua máquina local. Ambos vêm com as ferramentas padrão do cliente PostgreSQL.

<div id="considerations">
  ## Considerações antes da migração
</div>

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

<Note>
  Se você encontrar problemas durante a migração, consulte o [FAQ de Migrações do Managed Postgres](/pt-BR/products/managed-postgres/migrations/faq) para ver os erros e as soluções mais comuns.
</Note>

<h2 id="step-1-connect">
  Etapa 1: Conecte-se ao seu banco de dados de origem
</h2>

Abra o [console do ClickHouse Cloud](https://clickhouse.cloud) e selecione seu serviço Managed Postgres.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/servicecard.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=5da06beedac095dc527e7a83460f863e" alt="Cartão do serviço Managed Postgres na lista de serviços do ClickHouse Cloud" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/servicecard.webp" />

Na barra lateral esquerda, clique em **Fontes de dados**.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/overview.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=0fffed584827f3fb1386d27fc205b81a" alt="Entrada Fontes de dados na barra lateral do serviço Managed Postgres" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/overview.webp" />

Clique em **Iniciar importação**.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/startimport.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=4b335dc3b56a6bfa1a9ca04dc9447e56" alt="Página Fontes de dados com o botão Iniciar importação" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/startimport.webp" />

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.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/migrationform.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=f360daf02b6b04240a0d9e9e7f143498" alt="Etapa 1: formulário de conexão com o banco de dados de origem com opções de método de ingestão" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/migrationform.webp" />

Clique em **Próximo**.

<h2 id="automated-schema-migration">
  Migração automatizada de esquema
</h2>

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pg_dump_restore/automated.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=9951eb0470ed0a63c40543b2285057b9" alt="Etapa 2: migração automatizada de esquema com seletor de banco de dados de destino" size="lg" border width="2632" height="742" data-path="images/managed-postgres/pg_dump_restore/automated.webp" />

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](/pt-BR/integrations/clickpipes/postgres/lifecycle#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**](#manual-schema-migration).

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

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pg_dump_restore/newdb.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=7af9cb67d83ba390fa0dfbe9a26da87d" alt="Caixa de diálogo para criar um novo banco de dados Postgres" size="lg" border width="1642" height="742" data-path="images/managed-postgres/pg_dump_restore/newdb.webp" />

<h3 id="monitoring">
  Monitoramento
</h3>

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](#manual-schema-migration).

<h2 id="manual-schema-migration">
  Migração manual de esquema
</h2>

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

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pg_dump_restore/manual.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=bcb9482e3070bd505e42dd20b49949e5" alt="Passo 2: Migração manual de esquema com o comando de exportação pg_dump" size="lg" border width="2632" height="1022" data-path="images/managed-postgres/pg_dump_restore/manual.webp" />

<h3 id="step-2-export-schema">
  Exporte o esquema do seu banco de dados
</h3>

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

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/nextexport.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=817489659403b6183ea9ca726b4c1c85" alt="Etapa 2: comando pg_dump para exportação do esquema" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/nextexport.webp" />

```shell theme={null}
pg_dump \
  -h <source_host> \
  -U <source_user> \
  -d <source_database> \
  --schema-only \
  -f pg.sql
```

Isso cria `pg.sql` no diretório atual.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/psqlexport.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=8cb54def65d2d7d581686c4339aa0df2" alt="Saída do terminal após executar pg_dump" size="lg" border width="1452" height="422" data-path="images/managed-postgres/pgpg/psqlexport.webp" />

Clique em **Próximo**.

<h3 id="step-3-import-schema">
  Importe o esquema para seu serviço Managed Postgres
</h3>

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:

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/nextimport.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=59f3694d70eca58c60c9cb2f64509cd0" alt="Etapa 3: comando psql para importação do esquema" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/nextimport.webp" />

```shell theme={null}
psql \
  -h <target_host> \
  -p 5432 \
  -U <target_user> \
  -d <target_database> \
  -f pg.sql
```

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/psqlimport.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=3b4d6f4d7502e549ff3db7aa2e7b9c4a" alt="Saída do terminal após executar a importação do esquema com psql" size="lg" border width="2362" height="762" data-path="images/managed-postgres/pgpg/psqlimport.webp" />

Clique em **Próximo**.

<h2 id="step-4-ingestion-settings">
  Etapa 4: Definir as configurações de ingestão
</h2>

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 |

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/advancedsettings.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=b6c4dcaefdf8176f3d61636fabe70b95" alt="Etapa 4: formulário de configurações de ingestão com publication e opções avançadas de replicação" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/advancedsettings.webp" />

Clique em **Próximo**.

<div id="step-5-select-tables">
  ## Etapa 5: Selecione as tabelas
</div>

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

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/tablepicker.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=275772f47c4cbb55fdac96acdf8a8735" alt="Etapa 5: seletor de tabelas agrupadas por esquema com o botão Criar migração" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/tablepicker.webp" />

Clique em **Criar migração**.

<h2 id="monitor">
  Monitore a migração
</h2>

Após criar a migração, ela aparecerá listada em **Fontes de dados** com o status **Em execução**.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/migrationlist.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=a8e8712ecd01d1bf7b6112ba26275965" alt="Lista de fontes de dados mostrando uma migração em execução" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/migrationlist.webp" />

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.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/initialload.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=8efa910d3f00341a552b81aca49b9c05" alt="Tela de detalhes da migração mostrando estatísticas da carga inicial por tabela" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/initialload.webp" />

<h2 id="cutover">
  Transição de tráfego
</h2>

Quando a carga inicial estiver concluída e, no caso de uso de CDC, a defasagem de replicação estiver próxima de zero, você pode fazer a transição do tráfego do seu banco de dados Postgres de origem para o seu serviço Managed Postgres. Abra a visualização de detalhes da migração e selecione a aba **pós-migração steps**. Esse assistente guiado conduz você pelas seis etapas necessárias para concluir a migração com segurança. Cada etapa deve ser concluída na ordem antes que você possa avançar para a próxima.

<h3 id="cutover-read-only">
  Etapa 1: Colocar o banco de dados Postgres de origem em modo somente leitura
</h3>

Interrompa as gravações da aplicação na origem para que nada fique divergente durante a transição. O assistente exibe um comando `ALTER DATABASE` já preenchido com o nome do banco de dados de origem — execute-o no seu banco de dados de origem:

```sql theme={null}
ALTER DATABASE "<source_db>" SET default_transaction_read_only = on;
```

Em seguida, encerre todas as conexões existentes para que elas passem a adotar a configuração somente leitura e não restem gravações em andamento:

```sql theme={null}
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = '<source_db>'
  AND pid <> pg_backend_pid();
```

<Note>
  Dependendo do seu provider de Postgres, esta etapa pode ser diferente. Managed services podem restringir `ALTER DATABASE` ou o encerramento de backends e, em vez disso, expor o modo somente leitura pelo próprio console, por parameter groups ou pela revogação de privileges de escrita. Consulte a documentação do seu provider para saber a forma equivalente de tornar a origem somente leitura.
</Note>

Clique em **Mark as completed** para continuar.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/y9c9rzJ7kvnfRKJa/images/managed-postgres/pgpg/post-migration/readonly.webp?fit=max&auto=format&n=y9c9rzJ7kvnfRKJa&q=85&s=b5e1558c444dbf18d4a85850a9e2fe4d" alt="Etapa 1 pós-migração: colocar o banco de dados de origem em modo somente leitura" size="lg" border width="1486" height="1818" data-path="images/managed-postgres/pgpg/post-migration/readonly.webp" />

<h3 id="cutover-validate">
  Passo 2: Validar contagens de linhas
</h3>

Selecione quais tabelas replicadas você deseja validar. O ClickPipes conta as linhas de cada tabela selecionada tanto na origem quanto no destino e compara os resultados. Tabelas grandes podem retornar contagens aproximadas. Use **Select all tables** para validar todas as tabelas ou pesquise e ative tabelas específicas e, em seguida, clique em **Count rows**.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/GFspt4gULfSkoH59/images/managed-postgres/pgpg/post-migration/validate-row-counts.webp?fit=max&auto=format&n=GFspt4gULfSkoH59&q=85&s=2a376bdc0028485f26c4e3f159b7fec4" alt="Passo 2 pós-migração: selecionar tabelas e validar contagens de linhas entre origem e destino" size="lg" border width="1452" height="1612" data-path="images/managed-postgres/pgpg/post-migration/validate-row-counts.webp" />

<h3 id="cutover-pause">
  Passo 3: pausar o pipe
</h3>

Pause o ClickPipe para que a replicação seja interrompida antes de redefinir as sequências e fazer a transição do tráfego. Clique em **Pause ClickPipe** e aguarde até que o pipe seja pausado antes de continuar.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/y9c9rzJ7kvnfRKJa/images/managed-postgres/pgpg/post-migration/pause-pipe.webp?fit=max&auto=format&n=y9c9rzJ7kvnfRKJa&q=85&s=6d650c0e80230dd2fec9d6cce10d79de" alt="Passo 3 pós-migração: pausar o ClickPipe para interromper a replicação" size="lg" border width="1408" height="1322" data-path="images/managed-postgres/pgpg/post-migration/pause-pipe.webp" />

<h3 id="cutover-reset-sequences">
  Passo 4: Redefinir sequências
</h3>

Redefina as sequências no destino para que as novas inserções continuem a partir dos valores corretos. Clique em **Reset sequences** para alinhar cada sequência com o valor máximo atual de sua tabela.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/y9c9rzJ7kvnfRKJa/images/managed-postgres/pgpg/post-migration/reset-sequences.webp?fit=max&auto=format&n=y9c9rzJ7kvnfRKJa&q=85&s=6df042af5d04372c4f3ea93ebc572073" alt="Passo 4 pós-migração: redefinir sequências no destino" size="lg" border width="1382" height="1196" data-path="images/managed-postgres/pgpg/post-migration/reset-sequences.webp" />

<h3 id="cutover-traffic">
  Etapa 5: Faça a transição do tráfego
</h3>

Aponte as leituras e gravações para o seu serviço Managed Postgres atualizando a URL do banco de dados da sua aplicação para a connection string do Managed Postgres. O assistente fornece os connection details em vários formatos — **url**, **psql**, **env**, **yaml** e **jdbc** — para que você copie aquele que corresponde ao seu stack. Depois de atualizar a aplicação, clique em **Mark as completed**.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/y9c9rzJ7kvnfRKJa/images/managed-postgres/pgpg/post-migration/cutover-traffic.webp?fit=max&auto=format&n=y9c9rzJ7kvnfRKJa&q=85&s=a9ac993e5c1d9de925668c7baf169b42" alt="Etapa 5 pós-migração: transição do tráfego usando a connection string do Managed Postgres" size="lg" border width="1486" height="1018" data-path="images/managed-postgres/pgpg/post-migration/cutover-traffic.webp" />

<h3 id="cutover-cleanup">
  Passo 6: Limpeza
</h3>

Depois de fazer a transição e confirmar que o novo service está saudável, exclua a migration e libere os recursos da origem. O assistente exibe um comando `pg_drop_replication_slot` já preenchido com o nome do slot — execute-o na origem para remover o slot de replicação:

```sql theme={null}
SELECT pg_drop_replication_slot('<slot_name>');
```

Em seguida, clique em **Delete ClickPipe migration** para remover a migration de **fontes de dados**.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/y9c9rzJ7kvnfRKJa/images/managed-postgres/pgpg/post-migration/cleanup.webp?fit=max&auto=format&n=y9c9rzJ7kvnfRKJa&q=85&s=bd1fc0408e1dd1b552f66cfc2f1e980e" alt="Etapa 6 pós-migração: limpeza removendo o slot de replicação e excluindo a migration" size="lg" border width="1452" height="1432" data-path="images/managed-postgres/pgpg/post-migration/cleanup.webp" />

<h2 id="next-steps">
  Próximos passos
</h2>

* [Guia de início rápido do Managed Postgres](/pt-BR/products/managed-postgres/quickstart)
* [Detalhes de conexão do Managed Postgres](/pt-BR/products/managed-postgres/connection)
* [FAQ do ClickPipes Postgres](/pt-BR/integrations/clickpipes/postgres/faq)
