Skip to main content
Il est recommandé aux utilisateurs de ClickHouse Cloud d’utiliser ClickPipes pour la réplication de PostgreSQL vers ClickHouse. Cette solution prend nativement en charge le Change Data Capture (CDC) hautes performances pour PostgreSQL.
Crée une table ClickHouse à partir d’un dump initial d’une table PostgreSQL et lance le processus de réplication, c.-à-d. exécute une tâche en arrière-plan pour appliquer les nouvelles modifications au fur et à mesure qu’elles surviennent dans la table PostgreSQL de la base de données PostgreSQL distante.
Ce moteur de table est expérimental. Pour l’utiliser, définissez allow_experimental_materialized_postgresql_table sur 1 dans vos fichiers de configuration ou à l’aide de la commande SET :
Si plusieurs tables sont nécessaires, il est fortement recommandé d’utiliser le moteur de base de données MaterializedPostgreSQL plutôt que le moteur de table, ainsi que le paramètre materialized_postgresql_tables_list, qui spécifie les tables à répliquer (il sera également possible d’ajouter le schema de la base de données). Les performances seront nettement meilleures en termes d’utilisation du CPU, avec moins de connexions et moins de slots de réplication dans la base de données PostgreSQL distante.

Création d’une table

Paramètres du moteur
  • host:port — Adresse du serveur PostgreSQL.
  • database — Nom de la base de données distante.
  • table — Nom de la table distante.
  • user — Utilisateur PostgreSQL.
  • password — Mot de passe de l’utilisateur.

TLS/SSL

Les paramètres TLS/SSL sont transmis à libpq et peuvent être fournis via une collection nommée ou sous forme d’arguments clé-valeur placés à la fin du moteur : sslmode (disable, allow, prefer, require, verify-ca ou verify-full ; s’il n’est pas défini, la valeur par défaut de libpq, prefer, s’applique), ainsi que les certificats et la clé, sous l’une de deux formes. sslrootcert (certificat de CA), sslcert (certificat client) et sslkey (clé privée du client) sont des chemins vers des fichiers locaux au serveur, acceptés uniquement à partir d’une collection nommée définie dans le fichier de configuration du serveur. sslrootcert_pem, sslcert_pem et sslkey_pem acceptent à la place le contenu littéral du fichier correspondant, peuvent être spécifiés en SQL et sont masqués dans les logs et les requêtes SHOW, comme un mot de passe.
Les paramètres TLS/SSL font partie des paramètres de connexion à PostgreSQL, qui sont définis lors de la création de la table.

Prérequis

  1. Le paramètre wal_level doit avoir la valeur logical, et le paramètre max_replication_slots doit avoir une valeur d’au moins 2 dans le fichier de configuration de PostgreSQL.
  2. Une table utilisant le moteur MaterializedPostgreSQL doit avoir une clé primaire, identique à l’index de replica identity (par défaut : la clé primaire) d’une table PostgreSQL (voir les détails sur l’index de replica identity).
  3. Seul le moteur de base de données Atomic est autorisé.
  4. Le moteur de table MaterializedPostgreSQL fonctionne uniquement avec les versions de PostgreSQL >= 11, car son implémentation nécessite la fonction PostgreSQL pg_replication_slot_advance.

Colonnes virtuelles

  • _version — Compteur de transactions. Type : UInt64.
  • _sign — Indicateur de suppression. Type : Int8. Valeurs possibles :
    • 1 — La ligne n’est pas supprimée,
    • -1 — La ligne est supprimée.
Il n’est pas nécessaire d’ajouter ces colonnes lors de la création d’une table. Elles sont toujours accessibles dans une requête SELECT. La colonne _version correspond à la position LSN dans le WAL et peut donc être utilisée pour vérifier à quel point la réplication est à jour.
La réplication des valeurs TOAST n’est pas prise en charge. La valeur par défaut du type de données est utilisée.
Dernière modification le 14 août 2026