Pular para o conteúdo principal
Este guia fornece instruções passo a passo para migrar seu banco de dados PostgreSQL para o ClickHouse Managed Postgres usando a replicação lógica nativa do Postgres.

Pré-requisitos

  • Acesso ao seu banco de dados PostgreSQL de origem.
  • psql,pg_dump e pg_restore instalados na sua máquina local. Isso é necessário para criar tabelas vazias no banco de dados de destino. Essas ferramentas normalmente são incluídas nas instalações do PostgreSQL. Caso contrário, você pode baixá-las no site oficial do PostgreSQL.
  • Seu banco de dados de origem deve estar acessível a partir do ClickHouse Managed Postgres. Certifique-se de que todas as regras de firewall ou configurações de Security Group necessárias permitam essa conectividade. Você pode obter o IP de saída da sua instância do Managed Postgres fazendo o seguinte:
dig +short <your-managed-postgres-hostname>

A configuração

Para que a replicação lógica funcione, precisamos garantir que o banco de dados de origem esteja configurado corretamente. Estes são os principais requisitos:
  • O banco de dados de origem deve ter wal_level definido como logical.
  • O banco de dados de origem deve ter max_replication_slots definido para no mínimo 1.
  • Para RDS (que este guia usa como exemplo), você precisa garantir que seu grupo de parâmetros tenha rds.logical_replication definido como 1.
  • O usuário do banco de dados de origem deve ter o privilégio REPLICATION. No caso do RDS, execute:
    GRANT rds_replication TO <your-username>;
    
  • A role usada no banco de dados de destino deve ter privilégios de gravação nos objetos do banco de dados de destino:
    GRANT USAGE ON SCHEMA <schema_i> TO subscriber_user;
    GRANT CREATE ON DATABASE destination_db TO subscriber_user;
    GRANT pg_create_subscription TO subscriber_user;
    
    -- Conceder permissões nas tabelas
    GRANT INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA <schema_i> TO subscriber_user;
    
Certifique-se de que o banco de dados de origem esteja configurado desta forma:

Dump apenas do schema do banco de dados de origem

Antes de configurar a replicação lógica, precisamos criar o schema no banco de dados ClickHouse Managed Postgres de destino. Podemos fazer isso criando um dump apenas do schema do banco de dados de origem usando pg_dump:
pg_dump \
    -d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
    -s \
    --format directory \
    -f rds-dump
Aqui:
  • Substitua <user>, <password>, <host>, <port> e <database> pelas credenciais do banco de dados de origem.
  • -s especifica que queremos um dump apenas do schema.
  • --format directory especifica que queremos o dump no formato de diretório, que é adequado para o pg_restore.
  • -f rds-dump especifica o diretório de saída dos arquivos de dump. Observe que esse diretório será criado automaticamente e não deve existir previamente.
No nosso caso, temos duas tabelas: events e users. events tem um milhão de linhas, e users tem mil linhas.

Crie uma instância do Managed Postgres

Primeiro, certifique-se de ter uma instância do Managed Postgres configurada, de preferência na mesma região da origem. Você pode seguir o guia rápido aqui. Veja o que vamos provisionar neste guia:

Restaurar o schema no ClickHouse Managed Postgres

Agora que temos o dump do schema, podemos restaurá-lo na nossa instância do ClickHouse Managed Postgres usando pg_restore:
pg_restore \
    -d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
    --verbose \
    rds-dump
Aqui:
  • Substitua <user>, <password>, <host>, <port> e <database> pelas credenciais do seu banco de dados de destino no ClickHouse Managed Postgres.
  • --verbose fornece uma saída detalhada durante o processo de restauração. Este comando criará todas as tabelas, índices, views e outros objetos de esquema no banco de dados de destino, sem dados.
No nosso caso, após executar esse comando, temos duas tabelas, e elas estão vazias:

Configurar a replicação lógica

Com o schema em vigor, agora podemos configurar a replicação lógica do banco de dados de origem para o banco de dados de destino ClickHouse Managed Postgres. Isso envolve criar uma publicação no banco de dados de origem e uma assinatura no banco de dados de destino.

Crie uma publication no banco de dados de origem

Conecte-se ao banco de dados PostgreSQL de origem e crie uma publication que inclua as tabelas que você deseja replicar.
CREATE PUBLICATION <pub_name> FOR TABLE table1, table2...;
Criar uma publication FOR ALL TABLES pode causar sobrecarga na rede se houver muitas tabelas. Recomenda-se especificar apenas as tabelas que você deseja replicar.

Crie uma assinatura no banco de dados ClickHouse Managed Postgres de destino

Em seguida, conecte-se ao seu banco de dados ClickHouse Managed Postgres de destino e crie uma assinatura que se conecte à publication no banco de dados de origem.
CREATE SUBSCRIPTION demo_rds_subscription
CONNECTION 'postgresql://<user>:<password>@<host>:<port>/<database>'
PUBLICATION <pub_name_you_entered_above>;
Isso criará automaticamente um replication slot no banco de dados de origem e iniciará a replicação dos dados das tabelas especificadas para o banco de dados de destino. Dependendo do volume de dados, esse processo pode levar algum tempo. No nosso caso, após configurar a assinatura, os dados começaram a fluir: As novas linhas inseridas no banco de dados de origem agora serão replicadas para o banco de dados de destino ClickHouse Managed Postgres quase em tempo real.

Ressalvas e considerações

  • A replicação lógica replica apenas alterações nos dados (INSERT, UPDATE, DELETE). Alterações de esquema (como ALTER TABLE) precisam ser tratadas separadamente.
  • Garanta que a conexão de rede entre os bancos de dados de origem e destino seja estável para evitar interrupções na replicação.
  • Monitore o atraso da replicação para garantir que o banco de dados de destino esteja acompanhando o de origem. Definir um valor adequado para max_slot_wal_keep_size no banco de dados de origem pode ajudar a gerenciar um slot de replicação em crescimento e evitar que ele consuma espaço em disco em excesso.
  • Dependendo do seu caso de uso, talvez você queira configurar monitoramento e alertas para o processo de replicação.

Próximas etapas

Parabéns! Você migrou com sucesso seu banco de dados PostgreSQL para o ClickHouse Managed Postgres usando pg_dump e pg_restore. Agora, está tudo pronto para explorar os recursos do Managed Postgres e sua integração com o ClickHouse. Aqui está um guia de início rápido de 10 minutos para ajudar você a começar:
Última modificação em 10 de junho de 2026