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.
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 :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
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.
Prérequis
-
Le paramètre wal_level doit avoir la valeur
logical, et le paramètremax_replication_slotsdoit avoir une valeur d’au moins2dans le fichier de configuration de PostgreSQL. -
Une table utilisant le moteur
MaterializedPostgreSQLdoit 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). - Seul le moteur de base de données Atomic est autorisé.
-
Le moteur de table
MaterializedPostgreSQLfonctionne 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.
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.