Passer au contenu principal
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.
Si vous rencontrez des problèmes pendant la migration, consultez la FAQ des migrations Managed Postgres pour connaître les erreurs courantes et leurs solutions.

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

Ouvrez la console ClickHouse Cloud et sélectionnez votre service Managed Postgres. Dans la barre latérale de gauche, cliquez sur Sources de données. Cliquez sur 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.
Cliquez sur Suivant.

Étape 2 : 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 base source. Exécutez-la dans un terminal :
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. Cliquez sur Suivant.

Étape 3 : 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 créer une. L’assistant affiche une commande psql pour appliquer le dump du schéma à votre service Managed Postgres. Exécutez-la dans un terminal :
psql \
  -h <target_host> \
  -p 5432 \
  -U <target_user> \
  -d <target_database> \
  -f pg.sql
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ètrePar défautDescription
Intervalle de synchronisation (secondes)10Fréquence d’interrogation du slot de réplication
Threads parallèles pour le chargement initial4Nombre de threads pour la phase de copie en bloc
Taille du lot d’extraction100,000Lignes récupérées par lot de réplication
Nombre de lignes de l’instantané par partition100000Taille de partition pour les instantanés de grandes tables
Nombre de tables de l’instantané en parallèle1Tables dont l’instantané est pris simultanément
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. 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. 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é.

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

Dernière modification le 29 juin 2026