Pular para o conteúdo principal
Recomenda-se que os usuários do ClickHouse Cloud usem ClickPipes para a replicação do PostgreSQL para o ClickHouse. Isso oferece suporte nativo a Change Data Capture (CDC) de alto desempenho para PostgreSQL.
Cria uma tabela do ClickHouse com um dump inicial dos dados de uma tabela do PostgreSQL e inicia o processo de replicação; ou seja, executa uma tarefa em segundo plano para aplicar novas alterações à medida que elas ocorrem na tabela do PostgreSQL no banco de dados PostgreSQL remoto.
Este motor de tabela é experimental. Para usá-lo, defina allow_experimental_materialized_postgresql_table como 1 em seus arquivos de configuração ou usando o comando SET:
SET allow_experimental_materialized_postgresql_table=1
Se for necessária mais de uma tabela, é altamente recomendável usar o motor de banco de dados MaterializedPostgreSQL em vez do motor de tabela e usar a configuração materialized_postgresql_tables_list, que especifica as tabelas a serem replicadas (também será possível adicionar o schema do banco de dados). Isso será muito melhor em termos de CPU, com menos conexões e menos slots de replicação no banco de dados PostgreSQL remoto.

Criando uma tabela

CREATE TABLE postgresql_db.postgresql_replica (key UInt64, value UInt64)
ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgresql_table', 'postgres_user', 'postgres_password')
PRIMARY KEY key;
Parâmetros do motor
  • host:port — Endereço do servidor PostgreSQL.
  • database — Nome do banco de dados remoto.
  • table — Nome da tabela remota.
  • user — Usuário do PostgreSQL.
  • password — Senha do usuário.

Requisitos

  1. A configuração wal_level deve ter o valor logical, e o parâmetro max_replication_slots deve ter valor de pelo menos 2 no arquivo de configuração do PostgreSQL.
  2. Uma tabela com o motor MaterializedPostgreSQL deve ter uma chave primária — a mesma de um índice de identidade de réplica (por padrão, a chave primária) de uma tabela PostgreSQL (consulte detalhes sobre o índice de identidade de réplica).
  3. Somente o banco de dados Atomic é permitido.
  4. O motor de tabela MaterializedPostgreSQL funciona apenas com versões do PostgreSQL >= 11, pois a implementação exige a função do PostgreSQL pg_replication_slot_advance.

Colunas virtuais

  • _version — Contador de transações. Tipo: UInt64.
  • _sign — Marca de exclusão. Tipo: Int8. Valores possíveis:
    • 1 — A linha não foi excluída,
    • -1 — A linha foi excluída.
Essas colunas não precisam ser adicionadas quando uma tabela é criada. Elas sempre podem ser acessadas na consulta SELECT. A coluna _version corresponde à posição de LSN no WAL, portanto pode ser usada para verificar o quão atualizada está a replicação.
CREATE TABLE postgresql_db.postgresql_replica (key UInt64, value UInt64)
ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgresql_replica', 'postgres_user', 'postgres_password')
PRIMARY KEY key;

SELECT key, value, _version FROM postgresql_db.postgresql_replica;
A replicação de valores TOAST não é suportada. O valor padrão do tipo de dados será usado.
Última modificação em 10 de junho de 2026