Compartir vía


Creación de reflejo de Azure Database for PostgreSQL en Microsoft Fabric

La creación de reflejo en Fabric ofrece una experiencia sencilla para evitar el complejo proceso ETL (extracción, transformación y carga de datos) e integrar su infraestructura existente de Azure Database for PostgreSQL con el resto de sus datos en Microsoft Fabric. Puede replicar continuamente su base de datos para Azure PostgreSQL existente directamente en Fabric OneLake. Dentro de Fabric, puede desbloquear potentes escenarios de inteligencia empresarial, inteligencia artificial, Ingeniería de datos, Ciencia de datos y uso compartido de datos.

Importante

Los servidores recién creados luego de Ignite 2025 incluyen automáticamente la última versión disponible de manera general de los componentes de replicación. Los servidores existentes se actualizan progresivamente como parte de los siguientes ciclos de mantenimiento sin necesidad de intervención manual. No es necesario deshabilitar y volver a habilitar la creación de reflejo para recibir actualizaciones.

Architecture

La creación de reflejo de Fabric en Azure Database for PostgreSQL se basa en conceptos como la replicación lógica y el patrón de diseño de captura de datos modificados (CDC).

Una vez que estableces el reflejo de Fabric para una base de datos en una instancia de servidor flexible de Azure Database for PostgreSQL, un proceso de fondo de PostgreSQL crea una instantánea inicial para que se reflejen las tablas seleccionadas. Envía la instantánea a una zona de aterrizaje de Fabric OneLake en formato Parquet. Un proceso de replicador que se ejecuta en Fabric toma estos archivos de instantáneas iniciales y crea tablas Delta en el artefacto de la base de datos reflejada.

La base de datos de origen captura los cambios posteriores aplicados a las tablas seleccionadas. Envía estos cambios a la zona de aterrizaje de OneLake en lotes para que se apliquen a las tablas Delta correspondientes en el artefacto de la base de datos espejada.

Diagrama de la arquitectura de extremo a extremo para el reflejo de Fabric en una instancia de servidor flexible de Azure Database for PostgreSQL.

¿Qué es la captura de datos modificados (CDC)?

La captura de datos modificados (CDC) es un método que permite a las aplicaciones detectar y capturar los cambios realizados en una base de datos.

No se basa en consultas SQL explícitas para realizar un seguimiento de los cambios.

En su lugar, implica un flujo continuo de eventos de cambio publicados por el servidor de bases de datos.

Los clientes pueden suscribirse a esta secuencia para supervisar los cambios, centrarse en bases de datos específicas, tablas individuales o incluso subconjuntos de columnas dentro de una tabla.

En el caso del reflejo de Fabric, el patrón CDC se implementa en una extensión de PostgreSQL propiedad de Azure denominada azure_cdc. El plano de control de una instancia de servidor flexible de Azure Database para PostgreSQL se instala y registra en las bases de datos de origen durante el flujo de trabajo de habilitación de la replicación en Fabric.

Extensión de Captura de Datos Cambiados de Azure (CDC)

Azure CDC es una extensión para PostgreSQL que mejora las funcionalidades de descodificación lógica.

Interpreta y transforma los datos del Write-Ahead Log (WAL) en un formato comprensible y lógico.

La extensión convierte las modificaciones de la base de datos en una secuencia de operaciones lógicas como INSERT, UPDATE y DELETE.

Azure CDC es una capa sobre el complemento de descodificación lógica integrado de PostgreSQL, pgoutput.

Azure CDC exporta instantáneas de tabla y modificaciones como archivos Parquet y las copia en una zona de aterrizaje de Microsoft Fabric OneLake para su posterior procesamiento.

Habilitar el reflejo de Fabric en el portal de Azure

La característica de reflejo de Fabric en Azure Portal para una instancia de servidor flexible de Azure Database para PostgreSQL permite replicar las bases de datos de PostgreSQL en Microsoft Fabric. Esta característica le ayuda a integrar los datos sin problemas con otros servicios de Microsoft Fabric, lo que permite análisis avanzados, inteligencia empresarial y escenarios de ciencia de datos. Siguiendo algunos pasos sencillos en Azure Portal, puede configurar los requisitos previos necesarios e iniciar la creación de reflejo de las bases de datos para usar todo el potencial de Microsoft Fabric.

Versiones compatibles

Azure Database for PostgreSQL admite PostgreSQL 14 y versiones posteriores para la creación de reflejo de Fabric.

Prerrequisitos

Para poder usar la replicación de Fabric en una instancia de servidor flexible de Azure Database for PostgreSQL, debe configurar varios requisitos previos.

  • La identidad administrada asignada por el sistema (SAMI) debe estar habilitada.
    • Azure CDC usa esta identidad para autenticar las comunicaciones con Fabric OneLake, copiar instantáneas iniciales y transferir lotes a la zona de aterrizaje.

Puede configurar requisitos previos adicionales a través de un flujo de trabajo de habilitación dedicado descrito en la sección siguiente. Estos requisitos previos son:

  • wal_level parámetro de servidor debe establecerse en "lógico".

    • Habilita la replicación lógica para el servidor de origen.
  • El parámetro de servidor max_worker_processes debe aumentarse para admitir más procesos en segundo plano para replicación.

  • azure_cdc extensión. La extensión CDC de Azure (azure_cdc) se carga previamente en el servidor de origen y se registra para que las bases de datos seleccionadas se reflejen (requiere reiniciar).

Hay una nueva página disponible en Azure Portal para automatizar estas configuraciones de requisitos previos en el servidor de origen.

Captura de pantalla que muestra la página Nueva creación de reflejo de Fabric en Azure Portal para iniciar la activación.

Seleccione Introducción para iniciar el flujo de trabajo de habilitación.

Captura de pantalla de la nueva página de replicación de Fabric en el Azure portal para bases de datos seleccionadas.

En esta página se muestra el estado actual de los requisitos previos necesarios. Si la identidad administrada asignada por el sistema (SAMI) no está habilitada para este servidor, seleccione el vínculo que se redirigirá a la página donde puede habilitar esta característica.

Cuando haya terminado, seleccione las bases de datos para habilitar el reflejo de Fabric (hasta tres de forma predeterminada, pero puede aumentar este límite cambiando el parámetro de servidor max_mirrored_databases), y a continuación, seleccione Preparar.

El flujo de trabajo presenta una ventana emergente de reinicio del servidor. Al seleccionar Reiniciar, se inicia el proceso. El flujo de trabajo automatiza todos los pasos de configuración restantes. Puede empezar a crear la base de datos reflejada desde la interfaz de usuario de Fabric.

Página de creación de reflejo del tejido que muestra el servidor listo para la creación de reflejo.

Crear un rol de base de datos para Facric Mirroring

A continuación, debe proporcionar o crear un rol de PostgreSQL para que el servicio Fabric se conecte al servidor flexible de Azure Database for PostgreSQL.

Puede realizar esta tarea especificando un rol de base de datos para conectarse al sistema de origen.

Nota:

Tanto Entra ID como los roles de la base de datos local se admiten para conectar el reflejo de Fabric a Azure Database for PostgreSQL. Seleccione el método de autenticación que mejor se adapte a sus propósitos.

Uso de un rol de base de datos

  1. Conéctese a Azure Database for PostgreSQL mediante Visual Studio Code o pgAdmin. Conéctese con una entidad de seguridad que sea miembro del rol azure_pg_admin.

  2. Cree un rol de PostgreSQL denominado fabric_user. Se puede elegir cualquier nombre para este rol. Proporcione su propia contraseña segura. Conceda los permisos necesarios para la creación de reflejo de Fabric en la base de datos. Ejecute el siguiente script SQL para conceder los permisos CREATEDB, CREATEROLE, LOGIN, REPLICATION y azure_cdc_admin al nuevo rol denominado fabric_user.

    -- create a new user to connect from Fabric
    CREATE ROLE fabric_user CREATEDB CREATEROLE LOGIN REPLICATION PASSWORD '<strong password>';
    
    -- grant role for replication management to the new user
    GRANT azure_cdc_admin TO fabric_user;
    -- grant create permission on the database to mirror to the new user
    GRANT CREATE ON DATABASE <database_to_mirror> TO fabric_user;
    
  3. El usuario de base de datos que cree también debe ser owner de las tablas que se van a replicar en la base de datos reflejada. Este requisito significa que el usuario crea las tablas o cambia la propiedad de esas tablas mediante ALTER TABLE <table name here> OWNER TO fabric_user;.

Importante

Si falta uno de los pasos de configuración de seguridad anteriores, las operaciones reflejadas posteriores en el portal de Fabric producirán un error con un mensaje de Internal error.

Parámetros del servidor

Estos parámetros de servidor afectan directamente a la creación de reflejos en Fabric para Azure Database for PostgreSQL y se pueden usar para optimizar el proceso de replicación para Fabric OneLake.

  • Azure.fabric_mirror_enabled: el valor predeterminado está desactivado. Este parámetro especifica la marca que indica si la creación de reflejo está habilitada en el servidor. Se establece automáticamente al final del flujo de trabajo de habilitación del servidor, por lo que no debe cambiarlo manualmente.

  • max_replication_slots: valor predeterminado 10. Usamos una ranura de replicación por base de datos reflejada, pero los clientes pueden considerar aumentar esto si crean más reflejos o tienen otras ranuras de replicación creadas con otros fines (replicación lógica).

  • max_wal_senders: el valor predeterminado es 10. Al igual que con el parámetro anterior, se utiliza un proceso de envío wal por réplica, y se debe incrementar cuando se está replicando más bases de datos.

  • max_worker_processes: el valor predeterminado es 8. Después de la instantánea inicial, usamos un proceso por base de datos reflejada o donde la creación de reflejo está habilitada (pero aún no se ha creado ningún artefacto reflejado en Fabric). Debe aumentar este valor si tiene otras extensiones o cargas de trabajo con más procesos de trabajo.

  • max_parallel_workers: el valor predeterminado es 8, que limita el número de trabajos que se pueden ejecutar simultáneamente. Si habilita varias sesiones de creación de reflejo en el mismo servidor, puede considerar la posibilidad de aumentar este parámetro para permitir más operaciones paralelas (por ejemplo, aumentar el paralelismo en las instantáneas iniciales).

  • azure_cdc.max_fabric_mirrors El valor predeterminado es 3. Los clientes pueden aumentar este valor si necesitan reflejar más de tres bases de datos en este servidor. Es importante tener en cuenta que cada nueva base de datos reflejada consume recursos de servidor (cinco procesos en segundo plano usando recursos de CPU y memoria para la creación y el procesamiento por lotes de cambios de instantáneas), por lo que, dependiendo de la carga que tenga el servidor, debe supervisar el uso de recursos y escalar el tamaño de cómputo al siguiente tamaño disponible si el uso de CPU y memoria están constantemente por encima del 80% o el rendimiento no es lo que espera.

  • azure_cdc.max_snapshot_workers: el valor predeterminado es 3. Número máximo de procesos de trabajo usados durante la creación inicial de instantáneas. Aumente esto para acelerar la creación de instantáneas iniciales al aumentar el número de bases de datos reflejadas. Sin embargo, debe tener en cuenta todos los demás procesos en segundo plano que se ejecutan en el sistema antes de hacerlo.

  • azure_cdc.change_batch_buffer_size: el valor predeterminado es de 16 MB. Tamaño máximo del búfer (en MB) para el lote de cambio. En la tabla se muestran muchos datos almacenados en búfer hasta esto antes de escribirse en el disco local. En función de la frecuencia de cambio de datos en las bases de datos reflejadas, puede ajustar este valor para reducir la frecuencia del lote de cambio o aumentarlo si desea priorizar el rendimiento general.

  • azure_cdc.change_batch_export_timeout: el valor predeterminado es 30. Tiempo de inactividad máximo (en segundos) que transcurre entre los mensajes por lotes de cambio. Cuando se supera, marcamos el lote actual como completado. En función de la frecuencia de cambio de datos en las bases de datos reflejadas, puede ajustar este valor para reducir la frecuencia del lote de cambio o aumentarlo si desea priorizar el rendimiento general.

  • azure_cdc.parquet_compression: el valor predeterminado es ZSTD. Este parámetro es solo para uso interno, por lo que no debe modificarlo.

  • azure_cdc.snapshot_buffer_size: el valor predeterminado es 1000. Tamaño máximo (en MB) del búfer de instantáneas inicial. Según la tabla, mucho dato se almacena en búfer hasta este punto antes de enviarlo a Fabric. Recuerde que azure_cdc.snapshot_buffer_size*azure_cdc.max_snapshot_workers es el búfer de memoria total que se usa durante la instantánea inicial.

  • azure_cdc.snapshot_export_timeout: el valor predeterminado es 180. Tiempo máximo (en minutos) para exportar la instantánea inicial. Si se supera el tiempo máximo, se reinicia.

  • azure_cdc.prune_local_batches: el valor predeterminado es True. Si se establece, quite los datos por lotes del disco local, una vez cargado y confirmado correctamente en wal_sender.

Monitor

La supervisión de la creación de reflejo de Fabric en instancias de servidor flexible de Azure Database for PostgreSQL es esencial para garantizar que el proceso de creación de reflejo se ejecute sin problemas y de forma eficaz. Al supervisar el estado de las bases de datos reflejadas, puede identificar los posibles problemas y tomar medidas correctivas.

Puede usar varias funciones y tablas definidas por el usuario para supervisar las métricas importantes de CDC en las instancias de servidor flexible de Azure Database for PostgreSQL y solucionar problemas del proceso de creación de reflejo hacia Fabric.

Supervisión de funciones

La función de replicación de tejido en Azure DB for PostgreSQL replica de manera fluida sus bases de datos PostgreSQL en Microsoft Fabric, permitiéndole utilizar escenarios avanzados de análisis e integración de datos.

  • azure_cdc.list_tracked_publications(): para cada publicación de la instancia de servidor flexible de origen, devuelve una cadena separada por comas que contiene la siguiente información.

    • publicationName (text)
    • includeData (bool)
    • includeChanges (bool)
    • active (bool)
    • baseSnapshotDone (bool)
    • generationId (int)
  • azure_cdc.publication_status('pub_name')): para cada publicación del origen, la instancia de servidor flexible devuelve una cadena separada por comas con la siguiente información.

    • <status, start_lsn, stop_lsn, flush_lsn>.
    • El estado consta de ["Nombre de ranura", "Nombre de origen", "Ruta de acceso de destino de datos CDC", "Activo", "Instantánea Completada", "Porcentaje de progreso", "ID de generación", "ID de lote completado", "ID de lote subido", "Hora de inicio de CDC"]
  • azure_cdc.is_table_mirrorable('schema_name','table_name'):dado el esquema y el nombre de la tabla, devuelve si la tabla se puede reflejar. Para que una tabla se pueda reflejar, debe cumplir las condiciones siguientes:

    • Los nombres de columna no contienen ninguno de los siguientes caracteres: [ ;{}\n\t=()]
    • Los tipos de columna son uno de los siguientes tipos:
      • bigint
      • bigserial
      • boolean
      • bytes
      • character
      • character varying
      • date
      • double precision
      • integer
      • numeric
      • real
      • serial
      • oid
      • money
      • smallint
      • smallserial
      • text
      • time without time zone
      • time with time zone
      • timestamp without time zone
      • timestamp with time zone
      • uuid
    • La tabla no es una vista, una vista materializada, una tabla externa, una tabla del sistema o una tabla con particiones
    • La tabla tiene una clave principal o un índice único, no nulo y no parcial. Si no se cumplen estos requisitos, la creación de reflejo seguirá aplicando la identidad de réplica FULL, pero esto tendrá un impacto significativo en el rendimiento general de la replicación y en el uso de WAL. Se recomienda tener una clave principal o un índice único para tablas de tamaño notrivial.

Tablas de seguimiento

  • azure_cdc.tracked_publications: una fila para cada base de datos reflejada existente en Fabric. Consulte esta tabla para comprender el estado de cada publicación.
Nombre de la columna Tipo postgres Explanation
publication_id oid Oid de la publicación
ruta_de_destino texto Ruta de acceso a la zona de aterrizaje en Fabric OneLake
formato_de_destino azure_cdc.data_format Formato de los datos en CDC de Azure
include_data bool Si se deben incluir los datos de la captura inicial en la publicación
incluir_cambios bool Si se deben incluir cambios en la publicación
activo bool Si la publicación está activa
captura_completada bool Si se ha completado la captura instantánea
snapshot_progress SMALLINT Progreso de la instantánea
snapshot_progress_percentage texto Porcentaje de avance de la instantánea
identificador_de_generación int Identificador de generación
stream_start_lsn pg_lsn Número de secuencia de registro en el que se inició la secuencia de cambios
hora_de_inicio_de_transmisión marca de tiempo Marca de tiempo cuando se inició la secuencia de cambios
stream_stop_lsn pg_lsn Número de secuencia de registro donde se detuvo la secuencia de cambios
tamaño_de_snapshot bigint Tamaño total de la instantánea (en bytes)
tiempo_total int Tiempo total(en segundos) que se tarda en la publicación
  • azure_cdc.tracked_batches: una fila para cada lote de cambios capturado y enviado a Fabric OneLake. Consulte esta tabla para comprender qué lote ya se ha capturado y cargado en Fabric OneLake. Con la last_written_lsn columna , puede comprender si ya se ha enviado una transacción determinada en la base de datos de origen a Fabric.
Nombre Tipo postgres Explanation
publication_id oid Oid de la publicación
id_de_lote_completado bigint Número de secuencia (a partir de 1) del lote. Único por publicación
last_written_lsn pg_lsn LSN de la última escritura de este lote
  • azure_cdc.tracked_tables: una fila para cada tabla de la que se realiza un seguimiento en todas las publicaciones. Tiene los siguientes campos para todas las tablas publicadas, en todas las publicaciones. Si una tabla forma parte de dos publicaciones, se enumeraría dos veces.
Nombre Tipo postgres Explanation
publication_id oid Oid de la publicación
table_oid oid Oid de la tabla
sequence_number bigint número de secuencia del archivo generado