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.
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.
¿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.
Seleccione Introducción para iniciar el flujo de trabajo de habilitación.
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.
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
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.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 permisosCREATEDB,CREATEROLE,LOGIN,REPLICATIONyazure_cdc_adminal nuevo rol denominadofabric_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;El usuario de base de datos que cree también debe ser
ownerde 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 medianteALTER TABLE <table name here> OWNER TO fabric_user;.- Al cambiar la propiedad a un nuevo usuario, es posible que tenga que conceder a ese usuario todos los privilegios en el esquema
publicantes. Para obtener más información sobre la administración de cuentas de usuario, consulte la documentación sobre administración de usuarios de Azure Database for PostgreSQL, la documentación del producto PostgreSQL sobre roles y privilegios de bases de datos, sintaxis GRANT y privilegios.
- Al cambiar la propiedad a un nuevo usuario, es posible que tenga que conceder a ese usuario todos los privilegios en el esquema
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
walpor 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:
bigintbigserialbooleanbytescharactercharacter varyingdatedouble precisionintegernumericrealserialoidmoneysmallintsmallserialtexttime without time zonetime with time zonetimestamp without time zonetimestamp with time zoneuuid
- 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.
- Los nombres de columna no contienen ninguno de los siguientes caracteres:
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_lsncolumna , 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 |