Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Migrar datos de PostgreSQL mediante las fuentes de datos de ClickPipes

Beta

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

Consideraciones antes de migrar

  • Propagación de DDL: la replicación continua (CDC) captura operaciones DML y ADD COLUMN. Otros cambios de DDL, como DROP COLUMN y ALTER 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.

Tarjeta del servicio de Managed Postgres en la lista de servicios de ClickHouse Cloud

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

Entrada fuentes de datos en la barra lateral del servicio de Managed Postgres

Haz clic en Start import.

Página de fuentes de datos con el botón 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.
Paso 1: formulario de conexión a la base de datos de origen con opciones de método de ingestión

Haz clic en Next.

Migración automática del esquema

Paso 2: Migración automática del esquema con selector de base de datos de destino

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.

Cuadro de diálogo para crear una nueva base de datos de Postgres

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:

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.

Paso 2: Migración manual del esquema con el comando de exportación pg_dump

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:

Paso 2: comando pg_dump para exportar el esquema
pg_dump \
  -h <source_host> \
  -U <source_user> \
  -d <source_database> \
  --schema-only \
  -f pg.sql

Esto crea pg.sql en tu directorio actual.

Salida de la terminal después de ejecutar pg_dump

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:

Paso 3: comando psql para importar el esquema
psql \
  -h <target_host> \
  -p 5432 \
  -U <target_user> \
  -d <target_database> \
  -f pg.sql
Salida de la terminal después de ejecutar la importación del esquema con psql

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
Paso 4: formulario de ajustes de ingestión con publicación y opciones avanzadas de replicación

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.

Paso 5: selector de tablas agrupadas por esquema con el botón Crear migración

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.

Lista de fuentes de datos que muestra una migración 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.

Vista de detalles de la migración que muestra estadísticas de la carga inicial por tabla

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>');

Próximos pasos

Navigation