Saltar al contenido principal
Se recomienda a los usuarios de ClickHouse Cloud que utilicen ClickPipes para la replicación de PostgreSQL a ClickHouse. Esto ofrece compatibilidad nativa con Change Data Capture (CDC) de alto rendimiento para PostgreSQL.
Crea una tabla de ClickHouse con un volcado inicial de datos de una tabla de PostgreSQL e inicia el proceso de replicación; es decir, ejecuta un trabajo en segundo plano para aplicar nuevos cambios a medida que se producen en la tabla de PostgreSQL de la base de datos remota.
Este motor de tabla es experimental. Para usarlo, establezca allow_experimental_materialized_postgresql_table en 1 en sus archivos de configuración o mediante el comando SET:
SET allow_experimental_materialized_postgresql_table=1
Si se requiere más de una tabla, se recomienda encarecidamente usar el motor de base de datos MaterializedPostgreSQL en lugar del motor de tabla y usar la configuración materialized_postgresql_tables_list, que especifica las tablas que se van a replicar (también será posible añadir el schema de la base de datos). Esto ofrece un rendimiento mucho mejor en términos de CPU, con menos conexiones y menos slots de replicación en la base de datos remota de PostgreSQL.

Crear una tabla

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 del motor
  • host:port — Dirección del servidor PostgreSQL.
  • database — Nombre de la base de datos remota.
  • table — Nombre de la tabla remota.
  • user — Usuario de PostgreSQL.
  • password — Contraseña del usuario.

Requisitos

  1. La configuración wal_level debe tener el valor logical, y el parámetro max_replication_slots debe tener un valor de al menos 2 en el archivo de configuración de PostgreSQL.
  2. Una tabla con el motor MaterializedPostgreSQL debe tener una clave primaria, que debe ser la misma que el índice de identidad de réplica (de forma predeterminada, la clave primaria) de una tabla de PostgreSQL (consulte los detalles sobre el índice de identidad de réplica).
  3. Solo se permite la base de datos Atomic.
  4. El motor de tabla MaterializedPostgreSQL solo funciona con versiones de PostgreSQL >= 11, ya que la implementación requiere la función de PostgreSQL pg_replication_slot_advance.

Columnas virtuales

  • _version — Contador de transacciones. Tipo: UInt64.
  • _sign — Marca de eliminación. Tipo: Int8. Valores posibles:
    • 1 — La fila no está eliminada,
    • -1 — La fila está eliminada.
No es necesario añadir estas columnas al crear una tabla. Siempre se puede acceder a ellas en la consulta SELECT. La columna _version equivale a la posición de LSN en WAL, por lo que puede usarse para comprobar lo actualizada que está la replicación.
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;
La replicación de valores TOAST no es compatible. Se usará el valor predeterminado del tipo de dato.
Última modificación el 10 de junio de 2026