1
Préparer Neon
Créez un utilisateur ClickPipes dédié disposant des permissions de lecture et de réplication :Exécutez ces étapes sur votre branche Neon de production, en répétant les grants pour chaque schéma que vous souhaitez migrer.
Chaque table répliquée doit posséder une primary key ou utiliser
REPLICA IDENTITY FULL.Dans la console Neon, accédez à Settings → Logical Replication et activez la logical replication.
Si vous utilisez des restrictions d’IP, autorisez les adresses IP statiques de ClickPipes. Consultez le guide de configuration de la source Neon pour des instructions détaillées.2
Migrer et basculer avec ClickPipes
Suivez le guide de migration ClickPipes pour configurer et mener à bien la migration.
ClickPipes automatise le processus de bout en bout :
- Migration du schéma source vers une target database vide.
- Chargement initial optimisé grâce au snapshot parallèle.
- Utilisation du CDC pour maintenir la cible synchronisée avec Neon.
- Monitoring de la progression, du replication lag et des erreurs.
- Accompagnement tout au long de la validation et du basculement.
- Passez Neon en mode lecture seule pour arrêter les écritures.
- Vérifiez la concordance du nombre de lignes entre la source et la cible.
- Mettez le pipe en pause.
- Réinitialisez les séquences sur la cible.
- Basculez le trafic en mettant à jour la connection string de l’application pour qu’elle pointe vers ClickHouse Managed Postgres.
- Nettoyez en supprimant le replication slot et le ClickPipe.
Points à considérer pour la migration
Branches
Neon propose une création de branches instantanée en copy-on-write. ClickHouse Managed Postgres s’appuie sur du stockage NVMe local pour offrir des performances Postgres rapides, prévisibles et fiables. En contrepartie, les branches ne sont pas instantanées : elles sont créées sous forme de deployments indépendants via la récupération à un instant précis (PITR). Elles sont généralement disponibles en quelques minutes. Pour le développement au quotidien, nous recommandons de maintenir une base de données de développement ClickHouse Managed Postgres de taille réduite, contenant des données de production représentatives et anonymisées — quelques gigaoctets par exemple — et d’en créer des branches PITR selon les besoins. La création et le nettoyage des branches peuvent être automatisés au moyen de clickhousectl, notre CLI officielle, ou via OpenAPI ou Terraform Certains clients recourent à cette approche pour gérer des centaines d’environnements de développement. Nous améliorons activement l’expérience de fork et de sandbox. Consultez la documentation sur la création de branches.Neon Serverless Driver
Si votre application n’utilise pas le Neon Serverless Driver, vous pouvez ignorer cette section. Les applications exécutées sur des plateformes telles que Vercel peuvent utiliser le Neon Serverless Driver, qui repose sur WebSocket et est spécifique à Neon. Il ne suffit pas de le faire pointer vers ClickHouse Managed Postgres. Avant la migration :- Vérifiez la présence de dépendances telles que @neondatabase/serverless. Le cas échéant, remplacez-les par un driver Postgres standard comme node-postgres (pg).
- Pour les workloads serverless qui créent de nombreuses connexions de courte durée, utilisez l’instance PgBouncer intégrée.
- Les prepared statements sont pris en charge. Toutefois, comme PgBouncer utilise un pool de connexions par transaction, validez les applications qui s’appuient sur un comportement au niveau de la session, ce qui reste peu courant :
- Utilisez
SET LOCALplutôt queSETouRESETau niveau de la session. - Utilisez des temporary tables limitées à la transaction avec
ON COMMIT DROP. NOTIFYest pris en charge ;LISTENne l’est pas.- Utilisez des verrous consultatifs au niveau de la transaction, et non au niveau de la session.
- Les curseurs limités à la transaction sont pris en charge ;
WITH HOLDne l’est pas.
- Utilisez
- Si votre application dépend d’un comportement au niveau de la session non pris en charge, connectez-vous directement à Postgres plutôt que de passer par PgBouncer.
Limites de connexions
ClickHouse Managed Postgres prend en charge par défaut 500 connexions Postgres directes. Si votre workload Neon dépasse ce nombre, vous pouvez :- Utiliser un pool de connexions côté application.
- Utiliser l’instance PgBouncer intégrée, qui prend en charge jusqu’à 5 000 connexions client.
- Augmenter
max_connectionssi davantage de connexions directes sont nécessaires.max_connectionspeut être modifié depuis Settings → Edit parameters. Certaines modifications nécessitent un redémarrage. Consultez la documentation de configuration.
Modifications de schéma pendant la migration
Réduisez au maximum la période entre le démarrage de ClickPipes et le basculement — idéalement quelques jours tout au plus — et évitez toute modification de schéma pendant cet intervalle. Certains clients maintiennent des environnements en parallèle pendant plusieurs jours, le temps de tester leurs applications avec ClickHouse Managed Postgres. Une fois les tests terminés, ils démarrent un nouveau ClickPipe pour la migration finale, ce qui réduit le délai entre le chargement initial et le basculement. Le CDC réplique les inserts, les updates, les deletes etADD COLUMN, mais la plupart des autres modifications DDL ne sont pas propagées. Cela concerne notamment les index, les triggers, les modifications d’enum, les constraints, les fonctions et la plupart des modifications de colonnes.
Certaines modifications, comme une valeur d’enum manquante, interrompent la réplication et apparaissent dans les logs ClickPipes. Appliquez la modification manquante sur la cible : la réplication devrait alors reprendre. D’autres modifications, comme un index ou un trigger nouvellement créé, n’interrompent pas nécessairement le CDC, mais doivent tout de même être créées manuellement avant le basculement.
Avant de rediriger le trafic, comparez les schémas source et cible, appliquez les objets manquants et réinitialisez les sequences. La FAQ sur la migration présente les erreurs courantes et les actions correctives.