Comparteix via


Configuración de PostgreSQL para la ingesta en Azure Databricks

Importante

El conector de PostgreSQL para Lakeflow Connect está en versión preliminar pública. Póngase en contacto con el equipo de su cuenta de Databricks para inscribirse en la Vista previa pública.

En esta página se describen las tareas de configuración de origen para la ingesta de PostgreSQL en Azure Databricks mediante Lakeflow Connect.

Replicación lógica para la captura de datos modificados

El conector de PostgreSQL usa la replicación lógica para realizar un seguimiento de los cambios en las tablas de origen. La replicación lógica permite al conector capturar modificaciones de datos (inserciones, actualizaciones y eliminaciones) sin necesidad de desencadenadores ni sobrecarga significativa en la base de datos de origen.

La replicación lógica de PostgreSQL de Lakeflow requiere lo siguiente:

  1. Lakeflow Connect admite la replicación de datos desde la versión 13 y posteriores de PostgreSQL.

  2. Configure la base de datos para la replicación lógica:

    El parámetro PostgreSQL wal_level debe establecerse en logical.

  3. Cree publicaciones que incluyan todas las tablas que desea replicar.

  4. Cree ranuras de replicación para cada catálogo que vaya a ser replicado.

Nota:

Las publicaciones deben crearse antes de crear slots de replicación.

Para obtener más información sobre la replicación lógica, consulte la documentación de replicación lógica en el sitio web de PostgreSQL.

Información general sobre las tareas de configuración de origen

Complete las siguientes tareas en PostgreSQL antes de ingerir datos en Azure Databricks:

  1. Comprobación de PostgreSQL 13 o superior

  2. Configuración del acceso a la red (grupos de seguridad, reglas de firewall o VPN)

  3. Configurar la replicación lógica:

    • Habilitación de la replicación lógica (wal_level = logical)
  4. Opcional: configure el seguimiento DDL en línea para la detección automática de cambios de esquema. En caso de que quiera optar por el seguimiento de DDL en línea, póngase en contacto con el soporte de Databricks.

Importante

Si tiene previsto replicar desde varias bases de datos postgreSQL, debe crear una ranura de publicación y replicación independiente para cada base de datos. El script de seguimiento DDL en línea (si se usa) también debe ejecutarse en cada base de datos.

Configuración de la replicación lógica

Para habilitar la replicación lógica en PostgreSQL, configure la configuración de la base de datos y configure los objetos necesarios.

Establecer el nivel WAL en lógico

El registro de Write-Ahead (WAL) debe configurarse para la replicación lógica. Esta configuración normalmente requiere un reinicio de la base de datos.

  1. Compruebe la configuración actual wal_level :

    SHOW wal_level;
    
  2. Si el valor no es logical, establezca wal_level = logical en la configuración del servidor y reinicie el servicio PostgreSQL.

Creación de un usuario de replicación

Cree un usuario dedicado para la ingesta de Databricks con privilegios de replicación:

CREATE USER databricks_replication WITH PASSWORD 'your_secure_password';
GRANT CONNECT ON DATABASE your_database TO databricks_replication;
ALTER USER databricks_replication WITH REPLICATION;

Para obtener requisitos de privilegios detallados, consulte Requisitos de usuario de base de datos postgreSQL.

Establecer identidad de réplica para tablas

Para cada tabla que quiera replicar, configure la identidad de réplica. La configuración correcta depende de la estructura de la tabla:

Estructura de tabla IDENTIDAD DE RÉPLICA REQUERIDA Command
La tabla tiene clave principal y no contiene columnas TOASTable (por ejemplo, TEXT, BYTEA, VARCHAR(n) con valores grandes) DEFAULT ALTER TABLE schema_name.table_name REPLICA IDENTITY DEFAULT;
La tabla tiene clave principal, pero incluye columnas de longitud variable grande (TOASTable) FULL ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL;
La tabla no tiene una clave principal FULL ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL;

Para obtener más información sobre la configuración de identidad de réplica, consulte Identidad de réplica en la documentación de PostgreSQL.

Crear una publicación

Cree una publicación en cada base de datos que incluya las tablas que desea replicar:

-- Create a publication for specific tables
CREATE PUBLICATION databricks_publication FOR TABLE schema_name.table1, schema_name.table2;

-- Or create a publication for all tables in a database
CREATE PUBLICATION databricks_publication FOR ALL TABLES;

Nota:

Debe crear una publicación independiente en cada base de datos PostgreSQL que quiera replicar.

Configuración de parámetros de ranura de replicación

Antes de crear ranuras de replicación, configure los siguientes parámetros de servidor:

Limitar la retención de WAL para ranuras de replicación

Parámetro: max_slot_wal_keep_size

Se recomienda no establecermax_slot_wal_keep_size en -1 (el valor predeterminado), ya que esto provoca una expansión no controlada de WAL retenido por las ranuras de replicación que van retrasadas o están inactivas. En función de la carga de trabajo, establezca este parámetro en un valor finito.

Para más detalles sobre el parámetro max_slot_wal_keep_size, consulte la documentación oficial de PostgreSQL.

Nota:

Algunos proveedores de nube administrados no permiten la modificación de este parámetro y, en su lugar, se basan en la supervisión de ranuras integrada y la limpieza automática. Revise el comportamiento de la plataforma antes de establecer alertas operativas.

Para obtener más información, consulte:

Configuración de la capacidad de la ranura de replicación

Parámetro: max_replication_slots

Cada base de datos postgreSQL que se va a replicar requiere una ranura de replicación lógica. Establezca este parámetro en al menos el número de bases de datos que se replican, además de las necesidades de replicación existentes.

Configuración de remitentes WAL

Parámetro: max_wal_senders

Este parámetro define el número máximo de procesos simultáneos del remitente WAL que transmiten datos WAL a los suscriptores. En la mayoría de los casos, debería tener un proceso de envío de WAL para cada ranura de replicación, a fin de garantizar una replicación de datos eficaz y coherente.

Configure max_wal_senders para que sea al menos igual al número de ranuras de replicación en uso, teniendo en cuenta cualquier otro uso existente. Se recomienda establecerlo ligeramente más alto para proporcionar flexibilidad operativa.

Creación de una ranura de replicación

Cree una ranura de replicación en cada base de datos que la puerta de enlace de ingesta de Databricks usará para realizar un seguimiento de los cambios:

-- Create a replication slot with the pgoutput plugin
SELECT pg_create_logical_replication_slot('databricks_slot', 'pgoutput');

Importante

  • Las ranuras de replicación contienen datos WAL hasta que el conector los consume. Configure el parámetro max_slot_wal_keep_size para limitar la retención de WAL y evitar el crecimiento descontrolado de WAL. Consulte Configuración de parámetros de ranura de replicación para obtener más información.
  • Cuando elimina una canalización de ingestión, debe quitar manualmente la ranura de replicación asociada. Consulte Limpiar ranuras de replicación.

Opcional: Configurar el seguimiento de DDL en línea

El seguimiento DDL en línea es una característica opcional que permite al conector detectar cambios en el esquema y aplicarlos automáticamente desde la base de datos de origen. Esta característica está deshabilitada de forma predeterminada.

Advertencia

El seguimiento de DDL en línea actualmente está en versión preliminar y requiere contactar con el soporte de Databricks para habilitarlo en su espacio de trabajo.

Para obtener información sobre qué cambios de esquema se controlan automáticamente y qué requieren una actualización completa, consulte ¿Cómo controlan los conectores administrados la evolución del esquema? y la evolución del esquema.

Configuración del seguimiento de DDL en línea

Si el seguimiento de DDL en línea se ha habilitado para el área de trabajo, complete estos pasos en cada base de datos PostgreSQL:

  1. Descargue y ejecute el script lakeflow_pg_ddl_change_tracking.sql:

    \i lakeflow_pg_ddl_change_tracking.sql
    
  2. Compruebe que los desencadenadores y la tabla de auditoría se crearon correctamente:

    -- Check for the DDL audit table
    SELECT * FROM pg_tables WHERE tablename = 'lakeflow_ddl_audit';
    
    -- Check for the event triggers
    SELECT * FROM pg_event_trigger WHERE evtname LIKE 'lakeflow%';
    
  3. Agregue la tabla de auditoría DDL a la publicación:

    ALTER PUBLICATION databricks_publication ADD TABLE public.lakeflow_ddl_audit;
    

Notas de configuración específicas de la nube

AWS RDS y Aurora

  • Asegúrese de que el rds.logical_replication parámetro está establecido 1 en en en el grupo de parámetros.

  • Configure grupos de seguridad para permitir conexiones desde el área de trabajo de Databricks.

  • El usuario de replicación requiere el rds_replication rol:

    GRANT rds_replication TO databricks_replication;
    

Base de Datos de Azure para PostgreSQL

  • Habilite la replicación lógica en los parámetros del servidor a través de Azure Portal o la CLI.
  • Configure reglas de firewall para permitir conexiones desde el área de trabajo de Databricks.
  • En el caso del servidor flexible, se admite la replicación lógica. Para Servidor Único, asegúrese de que usa un nivel compatible.

GCP Cloud SQL para PostgreSQL

  • Habilite la cloudsql.logical_decoding bandera en la configuración de la instancia.
  • Configure redes autorizadas para permitir conexiones desde el área de trabajo de Databricks.
  • Asegúrese de que la cloudsql.enable_pglogical marca está establecida en on si usa pglogical extensions.

Comprobación de la configuración

Después de completar las tareas de instalación, compruebe que la replicación lógica está configurada correctamente:

  1. Compruebe que el wal_level está establecido en logical:

    SHOW wal_level;
    
  2. Compruebe que el usuario de replicación tiene el replication privilegio:

    SELECT rolname, rolreplication FROM pg_roles WHERE rolname = 'databricks_replication';
    
  3. Confirme que la publicación existe:

    SELECT * FROM pg_publication WHERE pubname = 'databricks_publication';
    
  4. Compruebe que la ranura de replicación existe:

    SELECT slot_name, slot_type, active, restart_lsn
    FROM pg_replication_slots
    WHERE slot_name = 'databricks_slot';
    
  5. Compruebe la identidad de réplica de las tablas:

    SELECT schemaname, tablename, relreplident
    FROM pg_tables t
    JOIN pg_class c ON t.tablename = c.relname
    WHERE schemaname = 'your_schema';
    

    La columna relreplident debe mostrar f para una identidad de réplica COMPLETA.

Pasos siguientes

Después de completar la configuración de origen, puede crear una puerta de enlace de ingesta y una canalización para ingerir datos de PostgreSQL. Consulte Ingesta de datos de PostgreSQL.