1
Preparar Neon
Cree un usuario dedicado de ClickPipes con permisos de lectura y replicación:Ejecute estos pasos en su rama de producción de Neon y repita los grants para cada esquema que desee migrar.
Cada tabla replicada debe tener una primary key o usar
REPLICA IDENTITY FULL.En la consola de Neon, vaya a Settings → Logical Replication y habilite la logical replication.
Si utiliza restricciones de IP, permita las direcciones IP estáticas de ClickPipes. Consulte la guía de configuración de la fuente Neon para obtener instrucciones detalladas.2
Migrar y conmutar con ClickPipes
Siga la guía de migración de ClickPipes para configurar y completar la migración.
ClickPipes automatiza el proceso de principio a fin:
- Migra el esquema de origen a una base de datos de destino vacía.
- Realiza una carga inicial optimizada mediante creación de instantáneas en paralelo.
- Utiliza CDC para mantener el destino sincronizado con Neon.
- Proporciona monitorización del progreso, del retraso de replicación y de los errores.
- Le guía en la validación y la conmutación.
- Ponga Neon en read-only mode para detener las escrituras.
- Valide el número de filas entre el origen y el destino.
- Pause el pipe.
- Restablezca las secuencias en el destino.
- Conmute el tráfico actualizando la connection string de la aplicación para que apunte a ClickHouse Managed Postgres.
- Limpie eliminando el replication slot y borrando el ClickPipe.
Consideraciones sobre la migración
Ramas
Neon ofrece ramificación instantánea mediante copy-on-write. ClickHouse Managed Postgres utiliza almacenamiento NVMe local para ofrecer un rendimiento de Postgres rápido, predecible y fiable. La contrapartida es que las ramas no son instantáneas: se crean como implementaciones independientes mediante recuperación a un momento dado (PITR). Normalmente están disponibles en unos minutos. Para el desarrollo diario, recomendamos mantener una base de datos de desarrollo de ClickHouse Managed Postgres más pequeña, con datos de producción representativos y saneados —por ejemplo, de unos pocos gigabytes—, y crear ramas PITR a partir de ella cuando sea necesario. La creación y la limpieza de ramas pueden automatizarse con clickhousectl, nuestra CLI oficial, o con OpenAPI o Terraform Algunos clientes emplean este enfoque para gestionar cientos de entornos de desarrollo. Estamos mejorando activamente la experiencia de bifurcación y de sandbox. Consulte la documentación sobre ramificación.Neon Serverless Driver
Si tu aplicación no utiliza el Neon Serverless Driver, puedes omitir esta sección. Las aplicaciones que se ejecutan en plataformas como Vercel pueden utilizar el Neon Serverless Driver, que se basa en WebSocket y es específico de Neon. No basta con apuntarlo a ClickHouse Managed Postgres. Antes de migrar:- Comprueba si existen dependencias como @neondatabase/serverless. Si las hay, sustitúyelas por un driver de Postgres estándar como node-postgres (pg).
- Para cargas de trabajo sin servidor que crean muchas conexiones de corta duración, utiliza la instancia de PgBouncer incluida.
- Las prepared statements son compatibles. Sin embargo, dado que PgBouncer utiliza pooling de transacciones, valida las aplicaciones que dependan de comportamientos a nivel de session, algo poco habitual en la mayoría de los casos:
- Utiliza
SET LOCALen lugar deSEToRESETa nivel de session. - Utiliza temporary tables con ámbito de transacción mediante
ON COMMIT DROP. NOTIFYes compatible;LISTENno.- Utiliza bloqueos consultivos a nivel de transacción, no a nivel de session.
- Los cursores con ámbito de transacción son compatibles;
WITH HOLDno.
- Utiliza
- Si tu aplicación depende de comportamientos a nivel de session no compatibles, conéctate directamente a Postgres en lugar de hacerlo a través de PgBouncer.
Límites de conexiones
ClickHouse Managed Postgres admite 500 conexiones directas a Postgres de forma predeterminada. Si tu carga de trabajo de Neon supera esta cifra, puedes:- Usar un pool de conexiones en el lado de la aplicación.
- Usar la instancia de PgBouncer incluida, que admite hasta 5.000 conexiones de client.
- Aumentar
max_connectionssi se requieren más conexiones directas.max_connectionsse puede modificar desde Settings → Edit parameters. Algunos cambios requieren un reinicio. Consulta la documentación de configuración.
Cambios de esquema durante la migración
Mantenga el período entre el inicio de ClickPipes y la conmutación lo más corto posible —idealmente, no más de unos pocos días— y evite realizar cambios de esquema durante ese intervalo. Algunos clientes mantienen entornos en paralelo durante varios días mientras prueban sus aplicaciones con ClickHouse Managed Postgres. Una vez finalizadas las pruebas, inician un nuevo ClickPipe para la migración final, con lo que se minimiza el tiempo entre la carga inicial y la conmutación. CDC replica inserciones, actualizaciones, eliminaciones yADD COLUMN, pero la mayoría de los demás cambios DDL no se propagan. Esto incluye índices, triggers, cambios en enums, constraints, funciones y la mayoría de las modificaciones de columnas.
Algunos cambios, como un valor de enum ausente, detienen la replicación y aparecen en los logs de ClickPipes. Aplique el cambio faltante en el destino y la replicación debería reanudarse. Otros cambios, como un índice o un trigger recién creado, puede que no interrumpan el CDC, pero aun así deben crearse manualmente antes de la conmutación.
Antes de redirigir el tráfico, compare los esquemas de origen y destino, aplique los objetos que falten y reinicie las secuencias. Las preguntas frecuentes sobre migración abordan los errores más comunes y los pasos para solucionarlos.