Passer au contenu principal
ClickHouse Cloud comprend un assistant d’importation intégré qui migre votre base de données PostgreSQL externe vers un service Managed Postgres. L’assistant prend en charge la connexion à la source, l’exportation et l’importation du schéma, les paramètres de réplication et la sélection des tables en cinq étapes guidées.

Prérequis

  • Accès à votre base de données PostgreSQL source avec un utilisateur disposant des privilèges de réplication.
  • Un service ClickHouse Managed Postgres comme cible de migration. Si vous n’en avez pas encore, consultez le guide de démarrage rapide.
  • pg_dump et psql installés sur votre machine locale. Ils sont tous deux inclus dans les outils standard du client PostgreSQL.

Points à prendre en compte avant la migration

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

É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 Data sources. Cliquez sur Start import. 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 utiliser 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 ultérieures.
  • 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 Next.

Étape 2 : Exportez le schéma de votre base de données

L’assistant affiche une commande pg_dump préremplie avec les détails de connexion de votre source. Exécutez-la dans un terminal :
pg_dump \
  -h <source_host> \
  -U <source_user> \
  -d <source_database> \
  --schema-only \
  -f pg.sql
Cette commande crée pg.sql dans le 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 de 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 est 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 masse
Taille du lot d’extraction100,000Lignes récupérées par lot de réplication
Nombre de lignes du snapshot par partition100000Taille de partition pour les snapshots de grandes tables
Nombre de tables du snapshot en parallèle1Nombre de tables traitées simultanément pour le snapshot
Cliquez sur Next.

Étape 5 : Sélectionner des 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 les sélectionner toutes. Cliquez sur Créer une migration.

Surveiller la migration

Après avoir créé la migration, elle apparaît dans Data sources avec le statut Running. Cliquez sur la migration pour ouvrir la vue détaillée. L’onglet Tables affiche la progression du chargement initial pour chaque table, notamment les 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 le retard de réplication est proche de zéro : Validez le nombre de lignes. Vérifiez ponctuellement les tables critiques sur la source et la cible avant de basculer le trafic :
SELECT COUNT(*) FROM public.orders;
Interrompez les écritures sur la source. Mettez en pause les écritures de l’application. Pour imposer le mode lecture seule 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 l’état de la réplication. Nettoyage. Une fois la bascule effectuée et après avoir confirmé que le nouveau service fonctionne correctement, supprimez la migration de Data sources. Si vous avez utilisé CDC, supprimez le slot de réplication de la source afin de libérer des ressources :
SELECT pg_drop_replication_slot('<slot_name>');

Étapes suivantes

Dernière modification le 29 juin 2026