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.
BetaRequisitos previos
- Acceso a la base de datos PostgreSQL de origen.
psql,pg_dumpypg_restoreinstalados 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 ClickHouse 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_levelconfigurado comological. - La base de datos de origen debe tener
max_replication_slotsconfigurado con un valor mínimo de1. - En RDS (que esta guía usa como ejemplo), debes asegurarte de que el grupo de parámetros tenga
rds.logical_replicationconfigurado como1. - 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-dumpAquí:
- Sustituye
<user>,<password>,<host>,<port>y<database>por las credenciales de tu base de datos de origen. -sespecifica que queremos un dump solo del esquema.--format directoryespecifica que queremos el dump en formato de directorio, que es adecuado parapg_restore.-f rds-dumpespecifica 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 ClickHouse Managed Postgres
Primero, asegúrate de tener configurada una instancia de ClickHouse 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-dumpAquí:
- Sustituye
<user>,<password>,<host>y<port>por las credenciales de tu base de datos de destino de ClickHouse Managed Postgres. --verboseproporciona 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 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_sizeen 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 de PostgreSQL a ClickHouse Managed Postgres con pg_dump y pg_restore. Ya puedes explorar las funcionalidades de ClickHouse Managed Postgres y su integración con ClickHouse. Aquí tienes una guía de inicio rápido de 10 minutos para empezar: