ClickHouse Cloud ahora ofrece ClickPipes para migrar su base de datos externa de PostgreSQL a un servicio Managed Postgres. Esta integración incorporada ofrece una experiencia optimizada para conectarse a su base de datos de origen, exportar el esquema, importarlo en Managed Postgres y configurar la replicación continua.
Prerrequisitos
- Acceso a tu base de datos PostgreSQL de origen con un usuario que tenga privilegios de replicación. Sigue la guía de configuración correspondiente a tu origen:
- Amazon RDS Postgres
- Amazon Aurora Postgres
- Supabase Postgres
- Google Cloud SQL Postgres
- Azure Flexible Server for Postgres
- Neon Postgres
- Crunchy Bridge Postgres
- TimescaleDB
- Origen genérico de Postgres para cualquier otro proveedor o instancia autohospedada
- Un servicio ClickHouse Managed Postgres como destino de la migration. Si aún no tienes uno, consulta el quickstart.
pg_dumpypsqlinstalados en tu equipo local. Ambos se incluyen con las herramientas estándar del cliente de PostgreSQL.
Consideraciones antes de migrar
- Propagación de DDL: la replicación continua (CDC) captura operaciones DML y
ADD COLUMN. Otros cambios de DDL, comoDROP COLUMNyALTER COLUMN, no se propagan y deben aplicarse manualmente en el sistema de destino.
Paso 1: Conéctate a tu base de datos de origen
Abre la consola de ClickHouse Cloud y selecciona tu servicio de Managed Postgres.

En la barra lateral izquierda, haz clic en fuentes de datos.

Haz clic en Start import.

Completa los detalles de conexión de tu base de datos PostgreSQL de origen: host, puerto, nombre de usuario, contraseña y nombre de la base de datos. Habilita TLS si la base de datos de origen lo requiere.
Si necesitas una conexión privada a tu base de datos de origen, puedes usar un túnel SSH e introducir los datos de SSH necesarios. Esto permite que la migración se conecte de forma segura a bases de datos que no son accesibles públicamente.
Elige un método de ingestión:
- Carga inicial + CDC — copia los datos existentes y después mantiene el destino sincronizado con los cambios posteriores.
- Solo carga inicial — copia puntual, sin replicación continua.
- Solo CDC — omite la copia inicial y replica únicamente los cambios nuevos a partir de este momento.

Haz clic en Next.
Migración automática del esquema

Al elegir esta opción, ClickPipe extraerá automáticamente el esquema de la base de datos de origen y lo aplicará a su servicio Managed Postgres durante la fase de Setup de ClickPipe, después de crearlo.
Esta funcionalidad presupone una base de datos de destino vacía, ya que extrae todos los objetos de la base de datos de origen, independientemente de las tablas que seleccione posteriormente en el asistente. Si ya tiene datos en la base de datos de destino o desea una configuración más personalizada, debe elegir el modo Manual.
Seleccione la base de datos de destino en el menú desplegable o haga clic en Crear una nueva base de datos para aprovisionarla.

Supervisión
Puede seguir el progreso de la migración de esquema en la vista de detalles de ClickPipes. Los registros indicarán el estado de la migración de esquema y también mostrarán los errores que se produzcan.
Este modo tiene las siguientes limitaciones:
- Los pipes que utilizan túneles SSH no pueden usar la migración automática del esquema. El esquema debe exportarse e importarse manualmente.
Migración manual del esquema
Si ya tiene datos en la base de datos de destino o desea una configuración más personalizada que la instalación desde cero que requiere el modo automatizado, puede seleccionar aquí el modo Manual.

Exporta el esquema de tu base de datos
El asistente muestra un comando pg_dump ya rellenado con los detalles de conexión de tu origen. Ejecútalo en una terminal:

pg_dump \
-h <source_host> \
-U <source_user> \
-d <source_database> \
--schema-only \
-f pg.sqlEsto crea pg.sql en tu directorio actual.

Haz clic en Next.
Importa el esquema en tu servicio de Managed Postgres
Selecciona la base de datos de destino en el menú desplegable o haz clic en Crear una nueva base de datos para aprovisionar una.
El asistente muestra un comando psql para aplicar el volcado de esquema a tu servicio de Managed Postgres. Ejecútalo en una terminal:

psql \
-h <target_host> \
-p 5432 \
-U <target_user> \
-d <target_database> \
-f pg.sql
Haz clic en Next.
Paso 4: Configurar los ajustes de ingestión
Especifique la publicación que se usará para la replicación lógica. Si deja este campo en blanco, se creará una publicación automáticamente.
Expanda Advanced replication settings para ajustar el rendimiento:
| Ajuste | Predeterminado | Descripción |
|---|---|---|
| Intervalo de sincronización (segundos) | 10 | Frecuencia con la que se consulta el slot de replicación |
| Hilos paralelos para la carga inicial | 4 | Número de hilos para la fase de copia masiva |
| Tamaño del lote de Pull | 100,000 | Filas recuperadas por lote de replicación |
| Número de filas por partición en la instantánea | 100000 | Tamaño de la partición para instantáneas de tablas grandes |
| Número de tablas en paralelo en la instantánea | 1 | Tablas de las que se toma una instantánea de forma simultánea |

Haga clic en Siguiente.
Paso 5: Seleccionar tablas
Selecciona las tablas que quieres replicar. Las tablas están agrupadas por esquema. Selecciona tablas individuales o expande un esquema para elegirlas todas.

Haz clic en Crear migración.
Supervisa la migración
Después de crear la migración, la verás en Fuentes de datos con el estado En ejecución.

Haz clic en la migración para abrir la vista de detalles. La pestaña Tablas muestra el progreso de la carga inicial de cada tabla, incluidas las filas procesadas, las particiones y el tiempo medio por partición. La pestaña Métricas muestra el retraso de replicación y el rendimiento una vez que se inicia CDC.

Tareas posteriores a la migración
Una vez completada la carga inicial y, si se usa CDC, cuando el retraso de replicación sea casi nulo:
Valide el número de filas. Verifique de forma puntual las tablas críticas tanto en el origen como en el destino antes de redirigir el tráfico:
SELECT COUNT(*) FROM public.orders;Detén las escrituras en el origen. Pausa las operaciones de escritura de la aplicación. Para forzar el modo de solo lectura durante la transición:
ALTER DATABASE <source_db> SET default_transaction_read_only = on;Confirme que la replicación esté al día. Compare la última fila del origen y del destino:
-- Ejecutar tanto en el origen como en el destino
SELECT MAX(id), MAX(updated_at) FROM public.orders;Restablecer las secuencias. Alinee las secuencias con los valores máximos actuales de cada tabla:
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 $$;Redirija el tráfico de la aplicación. Dirija las operaciones de lectura y escritura a su servicio Managed Postgres y supervise los errores, las violaciones de restricciones y el estado de la replicación.
Limpieza. Una vez que haya redirigido el tráfico y confirmado que el nuevo servicio está en buen estado, elimine la migración de fuentes de datos. Si usó CDC, elimine el slot de replicación del origen para liberar recursos:
SELECT pg_drop_replication_slot('<slot_name>');