Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Migrer des données PostgreSQL avec des sources de données dans ClickPipes

Beta

ClickHouse Cloud propose désormais ClickPipes pour migrer votre base de données PostgreSQL externe vers un service Managed Postgres. Cette intégration native offre une expérience simplifiée pour se connecter à votre base de données source, exporter le schéma, l’importer dans Managed Postgres et configurer la réplication continue.

Prérequis

Points à prendre en compte avant la migration

  • Propagation du DDL : la réplication continue (CDC) capture les opérations DML et ADD COLUMN. Les autres modifications DDL, telles que DROP COLUMN et ALTER COLUMN, ne sont pas propagées et doivent être appliquées manuellement sur la base cible.

Étape 1 : Connectez-vous à votre base de données source

Ouvrez la console ClickHouse Cloud et sélectionnez votre service Managed Postgres.

Carte du service Managed Postgres dans la liste des services ClickHouse Cloud

Dans la barre latérale de gauche, cliquez sur Sources de données.

Entrée Sources de données dans la barre latérale du service Managed Postgres

Cliquez sur Démarrer l'importation.

Page Sources de données avec le bouton Démarrer l'importation

Renseignez les informations de connexion de votre base de données PostgreSQL source : hôte, port, nom d'utilisateur, mot de passe et nom de la base de données. Activez TLS si votre source l'exige.

Si vous avez besoin d'une connexion privée à votre base de données source, vous pouvez opter pour un tunnel SSH et fournir les informations SSH nécessaires. Cela permet à la migration de se connecter en toute sécurité à des bases de données qui ne sont pas accessibles publiquement.

Choisissez une méthode d'ingestion :

  • Chargement initial + CDC — copie les données existantes, puis maintient la cible synchronisée avec les modifications en cours.
  • Chargement initial uniquement — copie unique, sans réplication continue.
  • CDC uniquement — ignore la copie initiale et réplique uniquement les nouvelles modifications à partir de ce moment.
Étape 1 : formulaire de connexion à la base de données source avec options de méthode d'ingestion

Cliquez sur Suivant.

Migration automatisée du schéma

Étape 2 : migration automatisée du schéma avec sélecteur de base de données de destination

Si vous choisissez cette option, le ClickPipe récupère automatiquement le schéma de votre base de données source et l'applique à votre service Managed Postgres lors de la phase Setup du ClickPipe, après sa création.

Cette fonctionnalité suppose une base de données cible vide, car elle récupère tous les objets de la base de données source, quelles que soient les tables que vous sélectionnerez ensuite dans l'assistant. Si votre base de données cible contient déjà des données ou si vous souhaitez une configuration plus personnalisée, vous devez choisir le mode Manuel.

Sélectionnez la base de données de destination dans la liste déroulante ou cliquez sur Créer une nouvelle base de données pour en provisionner une.

Boîte de dialogue Créer une base de données Postgres

Monitoring

Vous pouvez suivre l’avancement de la migration de schéma dans la vue détaillée de ClickPipes. Les journaux indiquent l’état de la migration de schéma et affichent également les éventuelles erreurs rencontrées.

Ce mode présente les limitations suivantes :

Migration manuelle du schéma

Si votre base de données cible contient déjà des données ou si vous souhaitez une configuration plus personnalisée que l’environnement vierge attendu par le mode automatisé, vous pouvez sélectionner le mode Manuel.

Étape 2 : migration manuelle du schéma avec la commande d’exportation pg_dump

Exportez le schéma de votre base de données

L'assistant affiche une commande pg_dump préremplie avec les informations de connexion de votre source. Exécutez-la dans un terminal :

Étape 2 : commande pg_dump pour l'export du schéma
pg_dump \
  -h <source_host> \
  -U <source_user> \
  -d <source_database> \
  --schema-only \
  -f pg.sql

Cela crée pg.sql dans votre répertoire courant.

Sortie du terminal après l'exécution de pg_dump

Cliquez sur Suivant.

Importez le schéma dans votre service Managed Postgres

Sélectionnez la base de données de destination dans la liste déroulante, ou cliquez sur Créer une nouvelle base de données pour en provisionner une.

L'assistant affiche une commande psql pour appliquer le dump du schéma à votre service Managed Postgres. Exécutez-la dans un terminal :

Étape 3 : commande psql pour l'import du schéma
psql \
  -h <target_host> \
  -p 5432 \
  -U <target_user> \
  -d <target_database> \
  -f pg.sql
Sortie du terminal après l'exécution de l'import du schéma avec psql

Cliquez sur Suivant.

Étape 4 : Configurer les paramètres d’ingestion

Indiquez la publication à utiliser pour la réplication logique. Si vous laissez ce champ vide, une publication sera créée automatiquement.

Développez Paramètres avancés de réplication pour ajuster le débit :

Paramètre Par défaut Description
Intervalle de synchronisation (secondes) 10 Fréquence d’interrogation du slot de réplication
Threads parallèles pour le chargement initial 4 Nombre de threads pour la phase de copie en bloc
Taille du lot d’extraction 100,000 Lignes récupérées par lot de réplication
Nombre de lignes de l’instantané par partition 100000 Taille de partition pour les instantanés de grandes tables
Nombre de tables de l’instantané en parallèle 1 Tables dont l’instantané est pris simultanément
Étape 4 : formulaire des paramètres d’ingestion avec publication et options avancées de réplication

Cliquez sur Next.

Étape 5: Sélectionner les tables

Sélectionnez les tables que vous souhaitez répliquer. Les tables sont regroupées par schéma. Sélectionnez des tables individuellement ou développez un schéma pour toutes les sélectionner.

Étape 5 : sélecteur de tables regroupées par schéma avec le bouton Créer la migration

Cliquez sur Créer la migration.

Surveiller la migration

Après avoir créé la migration, elle apparaît dans Sources de données avec le statut En cours d’exécution.

Liste des sources de données affichant une migration en cours d’exécution

Cliquez sur la migration pour ouvrir la vue détaillée. L’onglet Tables affiche la progression du chargement initial pour chaque table, notamment le nombre de lignes traitées, les partitions et le temps moyen par partition. L’onglet Metrics affiche le retard de réplication et le débit une fois le CDC démarré.

Vue détaillée de la migration affichant les statistiques du chargement initial par table

Tâches post-migration

Une fois le chargement initial terminé et, si vous utilisez CDC, que la latence de réplication est proche de zéro :

Validez le nombre de lignes. Effectuez des vérifications ponctuelles des tables critiques sur la source et sur la cible avant de basculer le trafic :

SELECT COUNT(*) FROM public.orders;

Interrompez les écritures sur la source. Suspendez les écritures de l’application. Pour appliquer le mode read-only pendant le basculement :

ALTER DATABASE <source_db> SET default_transaction_read_only = on;

Vérifiez que la réplication est bien à jour. Comparez la dernière ligne de la source et de la cible :

-- Run on both source and target
SELECT MAX(id), MAX(updated_at) FROM public.orders;

Réinitialisez les séquences. Alignez les séquences sur la valeur maximale actuelle de chaque table :

DO $$
DECLARE r RECORD;
BEGIN
    FOR r IN
        SELECT
            n.nspname AS schema_name,
            c.relname AS table_name,
            a.attname AS column_name,
            pg_get_serial_sequence(format('%I.%I', n.nspname, c.relname), a.attname) AS seq_name
        FROM pg_class c
        JOIN pg_namespace n ON n.oid = c.relnamespace
        JOIN pg_attribute a ON a.attrelid = c.oid
        WHERE c.relkind = 'r'
            AND a.attnum > 0
            AND NOT a.attisdropped
            AND n.nspname NOT IN ('pg_catalog', 'information_schema')
    LOOP
        IF r.seq_name IS NOT NULL THEN
            EXECUTE format(
                'SELECT setval(%L, COALESCE((SELECT MAX(%I) FROM %I.%I), 0) + 1, false)',
                r.seq_name, r.column_name, r.schema_name, r.table_name
            );
        END IF;
    END LOOP;
END $$;

Basculez le trafic de l’application. Redirigez les lectures et les écritures vers votre service Managed Postgres et surveillez les erreurs, les violations de contraintes et le bon fonctionnement de la réplication.

Nettoyez. Une fois la bascule effectuée et après avoir confirmé que le nouveau service fonctionne correctement, supprimez la migration depuis Sources de données. Si vous avez utilisé CDC, supprimez le slot de réplication sur la source afin de libérer des ressources :

SELECT pg_drop_replication_slot('<slot_name>');

Étapes suivantes

Navigation