Passer au contenu principal
Ce guide fournit des instructions détaillées, étape par étape, pour migrer votre base de données PostgreSQL vers ClickHouse Managed Postgres à l’aide de la réplication logique native de Postgres.

Prérequis

  • Accès à votre base de données PostgreSQL source.
  • psql, pg_dump et pg_restore installés sur votre machine locale. Ils servent à créer des tables vides dans votre base de données cible. Ils sont généralement inclus dans les installations de PostgreSQL. Sinon, vous pouvez les télécharger depuis le site officiel de PostgreSQL.
  • Votre base de données source doit être accessible depuis ClickHouse Managed Postgres. Assurez-vous que toutes les règles de pare-feu ou tous les paramètres de groupe de sécurité nécessaires autorisent cette connectivité. Vous pouvez obtenir l’adresse IP de sortie de votre instance Managed Postgres comme suit :
dig +short <your-managed-postgres-hostname>

La configuration

Pour que la réplication logique fonctionne, assurez-vous que la base de données source est correctement configurée. Voici les principales exigences :
  • La base de données source doit avoir wal_level défini sur logical.
  • La base de données source doit avoir max_replication_slots défini sur au moins 1.
  • Pour RDS (utilisé ici comme exemple), vous devez vous assurer que votre groupe de paramètres a rds.logical_replication défini sur 1.
  • Le database user de la base de données source doit disposer du privilège REPLICATION. Dans le cas de RDS, exécutez :
    GRANT rds_replication TO <your-username>;
    
  • Le rôle que vous utilisez pour la base de données cible doit disposer des privilèges d’écriture sur les objets de la base de données cible :
    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;
    
    -- Accorder des droits sur les tables
    GRANT INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA <schema_i> TO subscriber_user;
    
Assurez-vous que votre base de données source est configurée comme ceci :

Dump du schéma de la base de données source uniquement

Avant de configurer la réplication logique, nous devons créer le schéma dans la base de données cible ClickHouse Managed Postgres. Pour ce faire, nous pouvons créer un dump du schéma uniquement de la base de données source à l’aide de pg_dump :
pg_dump \
    -d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
    -s \
    --format directory \
    -f rds-dump
Ici :
  • Remplacez <user>, <password>, <host>, <port> et <database> par les credentials de votre base de données source.
  • -s indique que nous voulons un dump du schéma uniquement.
  • --format directory indique que nous voulons un dump au format répertoire, adapté à pg_restore.
  • -f rds-dump indique le répertoire de sortie des fichiers du dump. Notez que ce répertoire sera créé automatiquement et ne doit pas exister au préalable.
Dans notre cas, nous avons deux tables : events et users. events contient un million de lignes, et users en contient mille.

Créez une instance Managed Postgres

Assurez-vous d’abord d’avoir configuré une instance Managed Postgres, de préférence dans la même région que la base source. Vous pouvez suivre le guide de démarrage rapide ici. Voici ce que nous allons provisionner pour ce guide :

Restaurer le schéma dans ClickHouse Managed Postgres

Maintenant que nous disposons du dump du schéma, nous pouvons le restaurer dans notre instance ClickHouse Managed Postgres à l’aide de pg_restore :
pg_restore \
    -d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
    --verbose \
    rds-dump
Ici :
  • Remplacez <user>, <password>, <host>, <port> et <database> par les identifiants de connexion de votre base de données cible ClickHouse Managed Postgres.
  • --verbose fournit une sortie détaillée pendant le processus de restauration. Cette commande créera toutes les tables, tous les index, toutes les vues et les autres objets du schéma dans la base de données cible, sans aucune donnée.
Dans notre cas, après avoir exécuté cette commande, nous avons nos deux tables et elles sont vides :

Configurer la réplication logique

Le schéma étant en place, nous pouvons maintenant configurer la réplication logique de la base de données source vers la base de données cible ClickHouse Managed Postgres. Cela consiste à créer une publication sur la base de données source et un abonnement sur la base de données cible.

Créer une publication dans la base de données source

Connectez-vous à votre base de données PostgreSQL source et créez une publication incluant les tables que vous souhaitez répliquer.
CREATE PUBLICATION <pub_name> FOR TABLE table1, table2...;
La création d’une publication FOR ALL TABLES peut entraîner un surcoût réseau s’il existe un grand nombre de tables. Il est recommandé de ne spécifier que les tables que vous souhaitez répliquer.

Créer un abonnement sur la base de données ClickHouse Managed Postgres cible

Ensuite, connectez-vous à votre base de données ClickHouse Managed Postgres cible et créez un abonnement relié à la publication de la base de données source.
CREATE SUBSCRIPTION demo_rds_subscription
CONNECTION 'postgresql://<user>:<password>@<host>:<port>/<database>'
PUBLICATION <pub_name_you_entered_above>;
Cela créera automatiquement un slot de réplication sur la base de données source et commencera à répliquer les données des tables spécifiées vers la base de données cible. Selon le volume de vos données, ce processus peut prendre un certain temps. Dans notre cas, après avoir configuré l’abonnement, les données ont commencé à arriver : Les nouvelles lignes insérées dans la base de données source seront désormais répliquées vers la base de données cible ClickHouse Managed Postgres en quasi temps réel.

Limites et points à prendre en compte

  • La réplication logique ne réplique que les changements de données (INSERT, UPDATE, DELETE). Les changements de schéma (comme ALTER TABLE) doivent être gérés séparément.
  • Assurez-vous que la connexion réseau entre les bases de données source et cible est stable afin d’éviter toute interruption de la réplication.
  • Surveillez le retard de réplication pour vous assurer que la base de données cible suit bien la base de données source. Définir une valeur appropriée pour max_slot_wal_keep_size sur la base de données source peut aider à gérer la croissance d’un slot de réplication et à éviter qu’il ne consomme trop d’espace disque.
  • Selon votre cas d’usage, vous pouvez envisager de mettre en place une supervision et des alertes pour le processus de réplication.

Étapes suivantes

Félicitations ! Vous avez migré avec succès votre base de données PostgreSQL vers ClickHouse Managed Postgres à l’aide de pg_dump et pg_restore. Vous pouvez maintenant découvrir les fonctionnalités de Managed Postgres et son intégration avec ClickHouse. Voici un quickstart de 10 minutes pour bien démarrer :
Dernière modification le 25 juin 2026