Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Esta guía te muestra cómo publicar cambios desde una base de datos de Lakebase a un suscriptor externo de Postgres usando replicación lógica. Lakebase actúa como editor: define una publicación y el suscriptor externo se conecta para recibir los cambios.
Prerrequisitos
- Un proyecto de Lakebase con la base de datos desde la que quieres publicar y que contiene las tablas que quieres publicar.
- Un rol de Lakebase Postgres que es miembro del rol
databricks_superuser, para crear la publicación. Este es el rol con el que te conectas, no el rol que usa el suscriptor. En el primer paso se crea el rol de replicación del suscriptor. - Conexiones con contraseña activadas en el proyecto. El suscriptor se conecta con un rol nativo de contraseña de Postgres, y las conexiones con contraseña se desactivan por defecto para los nuevos proyectos. Consulte Administración de conexiones de contraseña.
- Una base de datos externa de Postgres para actuar como suscriptor. El suscriptor también puede ser una base de datos Lakebase en otra región. No se soporta la replicación entre bases de datos Lakebase en la misma región.
La replicación lógica está soportada en Lakebase, que se ejecuta en wal_level = logical de forma predeterminada, por lo que no hay un paso por proyecto para activar la publicación.
Crear un rol de replicación
Crea un rol dedicado para que el suscriptor externo pueda conectarse como tal. El suscriptor se conecta con un nombre de usuario y contraseña de Postgres, así que crea un rol de Postgres con contraseña nativa, no un rol OAuth. Los roles OAuth se autentican con tokens Azure Databricks de corta duración, que la cadena de conexión de suscripción basada en contraseña no puede utilizar. El puesto debe tener ese REPLICATION atributo. Los roles que creas en la App, CLI o API de Lakebase tienen este atributo, tanto si les concedes databricks_superuser como si no. En la pestaña Lakebase App Añadir rol>Contraseña, introduce el nombre de un rol. No necesitas seleccionar databricks_superuser. Consulte Creación de un rol nativo de contraseña de Postgres.
Para establecer la contraseña tú mismo, crea el rol con SQL en su lugar. Incluye el REPLICATION atributo, porque los roles creados con SQL no lo reciben automáticamente:
CREATE ROLE replication_user WITH LOGIN REPLICATION PASSWORD '<password>';
Si el rol no es dueño de las tablas que se replican, concédele acceso de lectura:
GRANT USAGE ON SCHEMA public TO replication_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO replication_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO replication_user;
Crear una publicación
Conéctate a la base de datos de Lakebase como miembro del databricks_superuser rol y luego crea una publicación para las tablas que quieres replicar. Cada tabla debe tener un PRIMARY KEY o una identidad de réplica configurada. Consulta identidad de réplica en la documentación de Postgres.
CREATE PUBLICATION my_publication FOR TABLE orders, customers;
Permite que el abonado se conecte
El suscriptor externo se conecta a Lakebase a través del proxy edge de Azure Databricks, que aplica la lista de acceso IP al espacio de trabajo. Permite que la dirección IP del suscriptor esté permitida en la lista de acceso IP del espacio de trabajo para que pueda acceder a tu base de datos Lakebase. Consulta Gestionar la lista de acceso IP.
Private Link no es compatible con la conexión del suscriptor. El abonado se conecta a través del endpoint público de Lakebase.
Suscribirse a la base de datos externa
En la base de datos externa de Postgres, crea las tablas de destino con los mismos nombres y columnas que las tablas que publicas. Crearlas vacías: la copia inicial falla en claves duplicadas o en violaciones de restricciones si una tabla objetivo ya contiene filas. Puedes crear las tablas manualmente, o volcar el esquema de Lakebase y cargarlo en el suscriptor. Consulta Volcar solo el esquema.
Luego, como rol que puede crear suscripciones en la base de datos externa, crear una suscripción que se conecte a Lakebase:
CREATE SUBSCRIPTION my_subscription
CONNECTION 'host=<lakebase-host> port=5432 dbname=<lakebase-db> user=replication_user password=<password> sslmode=verify-full sslrootcert=system'
PUBLICATION my_publication;
Utiliza una conexión directa para el abonado. La replicación lógica requiere una conexión persistente, por lo que <lakebase-host> debe ser el nombre de host directo del endpoint, no el nombre de host del pooler de conexiones -pooler. Consulta Agrupamiento de conexiones.
Note
Lakebase aplica TLS en todas las conexiones, por lo que el tráfico siempre se cifra sin necesidad de hacer nada. Para la máxima protección, conéctate con sslmode=verify-full, que también verifica el certificado del servidor de Lakebase frente al almacén raíz de tu sistema. Lakebase utiliza un certificado de confianza pública, por lo que no se necesita ningún certificado adicional. El más débil sslmode=require cifra pero no verifica la identidad del servidor.
Verificar la replicación
En el suscriptor externo, confirma que han llegado las filas ya existentes:
SELECT COUNT(*) FROM orders;
Inserta o actualiza una fila en Lakebase y luego vuelve a consultar al suscriptor. El cambio aparece en la suscripción en pocos segundos.
Comprueba el estado de la suscripción y el retraso del suscriptor:
SELECT subname, received_lsn, latest_end_lsn, last_msg_receipt_time
FROM pg_catalog.pg_stat_subscription;
Para confirmar que la copia inicial ha terminado, ejecuta la consulta de estado de sincronización por tabla en Monitor replication en el suscriptor y espera hasta que cada tabla lea Ready (fully live).
La conexión del suscriptor mantiene una ranura de replicación en el publicador de Lakebase. Mientras un suscriptor está replicando activamente, la capacidad de procesamiento de Lakebase no escala a cero. Consulta la replicación lógica y el escalado a cero. Si el suscriptor deja de consumir cambios, el slot queda inactivo y Lakebase lo elimina tras unas 40 horas. Consulta Eliminación automática de ranuras inactivas.
Pasos siguientes
- Gestionar la replicación: Monitorizar publicaciones y slots de replicación, y solucionar problemas. Consulta Gestionar y monitorizar la replicación lógica.
- Migrar a Lakebase: Replicar una base de datos externa de Postgres en Lakebase. Consulta la sección Replicación de datos en Lakebase.
- Comparar métodos: Elige la forma correcta de mover datos dentro y fuera de Lakebase. Ver Mover datos dentro y fuera de Lakebase.