Saltar al contenido principal
Esta guía proporciona instrucciones paso a paso para migrar su base de datos de PostgreSQL a ClickHouse Managed Postgres mediante la replicación lógica nativa de Postgres.

Requisitos previos

  • Acceso a la base de datos PostgreSQL de origen.
  • psql,pg_dump y pg_restore instalados en su máquina local. Esto es necesario para crear tablas vacías en la base de datos de destino. Normalmente se incluyen con las instalaciones de PostgreSQL. Si no es así, puede descargarlos desde el sitio web oficial de PostgreSQL.
  • La base de datos de origen debe ser accesible desde ClickHouse Managed Postgres. Asegúrese de que las reglas de firewall o la configuración del Security Group necesarias permitan esta conectividad. Puede obtener la IP de salida de su instancia de Managed Postgres de la siguiente manera:
dig +short <your-managed-postgres-hostname>

La configuración

Para que la replicación lógica funcione, debemos asegurarnos de que la base de datos de origen esté configurada correctamente. Estos son los requisitos principales:
  • La base de datos de origen debe tener wal_level configurado como logical.
  • La base de datos de origen debe tener max_replication_slots configurado con un valor mínimo de 1.
  • En RDS (que esta guía usa como ejemplo), debes asegurarte de que el grupo de parámetros tenga rds.logical_replication configurado como 1.
  • El usuario de la base de datos de origen debe tener el privilegio REPLICATION. En el caso de RDS, ejecutarías:
    GRANT rds_replication TO <your-username>;
    
  • El rol que uses para la base de datos de destino debe tener permisos de escritura sobre los objetos de la base de datos de destino:
    GRANT USAGE ON SCHEMA <schema_i> TO subscriber_user;
    GRANT CREATE ON DATABASE destination_db TO subscriber_user;
    GRANT pg_create_subscription TO subscriber_user;
    
    -- Conceder permisos sobre las tablas
    GRANT INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA <schema_i> TO subscriber_user;
    
Asegúrate de que tu base de datos de origen esté configurada de esta manera:

Dump únicamente del esquema de la base de datos de origen

Antes de configurar la replicación lógica, debemos crear el esquema en la base de datos de destino ClickHouse Managed Postgres. Podemos hacerlo creando un dump únicamente del esquema de la base de datos de origen con pg_dump:
pg_dump \
    -d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
    -s \
    --format directory \
    -f rds-dump
Aquí:
  • Sustituye <user>, <password>, <host>, <port> y <database> por las credenciales de tu base de datos de origen.
  • -s especifica que queremos un dump solo del esquema.
  • --format directory especifica que queremos el dump en formato de directorio, que es adecuado para pg_restore.
  • -f rds-dump especifica el directorio de salida de los archivos del dump. Ten en cuenta que este directorio se creará automáticamente y no debe existir de antemano.
En nuestro caso, tenemos dos tablas: events y users. events tiene un millón de filas y users tiene mil filas.

Crear una instancia de Managed Postgres

Primero, asegúrate de tener configurada una instancia de Managed Postgres, preferiblemente en la misma región que el origen. Puedes seguir la guía de inicio rápido aquí. Esto es lo que vamos a aprovisionar para esta guía:

Restaura el esquema en ClickHouse Managed Postgres

Ahora que tenemos el dump del esquema, podemos restaurarlo en nuestra instancia de ClickHouse Managed Postgres con pg_restore:
pg_restore \
    -d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
    --verbose \
    rds-dump
Aquí:
  • Sustituye <user>, <password>, <host>, <port> y <database> por las credenciales de tu base de datos de destino de ClickHouse Managed Postgres.
  • --verbose proporciona información detallada durante el proceso de restauración. Este comando creará todas las tablas, índices, vistas y otros objetos del esquema en la base de datos de destino sin datos.
En nuestro caso, después de ejecutar este comando, tenemos las dos tablas y están vacías:

Configurar la replicación lógica

Con el esquema ya definido, ahora podemos configurar la replicación lógica desde la base de datos de origen a la base de datos de destino ClickHouse Managed Postgres. Esto implica crear una publicación en la base de datos de origen y una suscripción en la base de datos de destino.

Crear una publicación en la base de datos de origen

Conéctese a la base de datos PostgreSQL de origen y cree una publicación que incluya las tablas que desea replicar.
CREATE PUBLICATION <pub_name> FOR TABLE table1, table2...;
Crear una publicación FOR ALL TABLES puede generar una sobrecarga de red si hay muchas tablas. Se recomienda especificar solo las tablas que desea replicar.

Crear una suscripción en la base de datos ClickHouse Managed Postgres de destino

A continuación, conéctese a su base de datos ClickHouse Managed Postgres de destino y cree una suscripción que se conecte a la publicación de la base de datos de origen.
CREATE SUBSCRIPTION demo_rds_subscription
CONNECTION 'postgresql://<user>:<password>@<host>:<port>/<database>'
PUBLICATION <pub_name_you_entered_above>;
Esto creará automáticamente un slot de replicación en la base de datos de origen y comenzará a replicar los datos de las tablas especificadas a la base de datos de destino. Dependiendo del volumen de datos, este proceso puede tardar un tiempo. En nuestro caso, después de configurar la suscripción, los datos comenzaron a llegar: Las nuevas filas insertadas en la base de datos de origen ahora se replicarán en la base de datos de destino de ClickHouse Managed Postgres casi en tiempo real.

Advertencias y consideraciones

  • La replicación lógica solo replica cambios en los datos (INSERT, UPDATE, DELETE). Los cambios de esquema (como ALTER TABLE) deben gestionarse por separado.
  • Asegúrese de que la conexión de red entre las bases de datos de origen y destino sea estable para evitar interrupciones en la replicación.
  • Supervise el retraso de la replicación para asegurarse de que la base de datos de destino mantiene el ritmo de la base de datos de origen. Establecer un valor adecuado para max_slot_wal_keep_size en la base de datos de origen puede ayudar a gestionar un slot de replicación en crecimiento y evitar que consuma demasiado espacio en disco.
  • Según su caso de uso, quizá le convenga configurar supervisión y alertas para el proceso de replicación.

Siguientes pasos

¡Enhorabuena! Has migrado correctamente tu base de datos PostgreSQL a ClickHouse Managed Postgres con pg_dump y pg_restore. Ya puedes explorar las funcionalidades de Managed Postgres y su integración con ClickHouse. Aquí tienes una guía de inicio rápido de 10 minutos para empezar:
Última modificación el 10 de junio de 2026