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 proporciona una experiencia sencilla para evitar ETL complejo (Extraer carga de transformación) e integrar el patrimonio del servidor flexible de Azure Database for PostgreSQL existente con el resto de los 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.
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 establecida la creación de reflejo de Fabric para una base de datos en una instancia de servidor flexible de Azure Database for PostgreSQL, un proceso en segundo plano de PostgreSQL crea una instantánea inicial para que se reflejen las tablas seleccionadas, que se envía 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.
Los cambios posteriores aplicados a las tablas seleccionadas también se capturan en la base de datos de origen y se envían a la zona de aterrizaje de OneLake en lotes que se aplicarán a las tablas Delta respectivas del artefacto de base de datos reflejada.
¿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 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.
Prerrequisitos
Se deben configurar varios requisitos previos antes de usar la creación de reflejo de Fabric en una instancia de servidor flexible de Azure Database for PostgreSQL.
La identidad administrada asignada por el sistema (SAMI) debe estar habilitada.\
- Esta es la identidad que usa Azure CDC para autenticar las comunicaciones con Fabric OneLake, copiar instantáneas iniciales y cambiar lotes a la zona de aterrizaje.
wal_level parámetro de servidor debe establecerse en "lógico".
- Habilita la replicación lógica para el servidor de origen.
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).
El parámetro de servidor max_worker_processes debe aumentarse para admitir más procesos en segundo plano para replicación.
Hay disponible una nueva página en Azure Portal para automatizar la configuración 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.
Una vez hecho esto, puede seleccionar las bases de datos para habilitar el reflejo de Fabric (hasta 3 de forma predeterminada, aunque este límite puede aumentarse cambiando el parámetro de servidor max_mirrored_databases) y a continuación, seleccione Preparar.
El flujo de trabajo presenta un elemento emergente Reiniciar servidor y, al seleccionar Reiniciar, puede iniciar el proceso, que automatiza todos los pasos de configuración restantes y puede empezar a crear la base de datos reflejada desde la interfaz de usuario de Fabric
Parámetros del servidor
Estos parámetros de servidor afectan directamente al reflejo de Fabric para Azure Database for PostgreSQL.
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.
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 asegurarse de que el proceso de creación de reflejo se ejecuta de forma fluida y eficaz. Al supervisar el estado de las bases de datos reflejadas, puede identificar los posibles problemas y tomar medidas correctivas según sea necesario.
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 creación de reflejo de Fabric en Azure Database for PostgreSQL le permite replicar las bases de datos de PostgreSQL en Microsoft Fabric sin problemas, lo que permite 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 sea replicable, debe satisfacer lo siguiente:
- Los nombres de columna no contienen ninguno de los siguientes caracteres:
[ ;{}\n\t=()] - Los tipos de columna son uno de los siguientes:
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, distinto de NULL y no particional
- 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 |
| last_received_lsn | pg_lsn | Último LSN recibido |
| server_lsn | pg_lsn | LSN del servidor actual (en el momento en que se finalizó la captura de este lote) |
| is_batch_uploaded | bool | Si se carga el lote |
| is_batch_acknowledged | bool | Si confirmamos wal_sender para estos datos por lotes (last_written_lsn) |
| hora_de_inicio_de_lote | TIMESTAMPTZ | Marca temporal del inicio del lote |
| tiempo_de_finalización_de_lote | TIMESTAMPTZ | Marca de tiempo de la finalización del lote |
| batch_uploaded_time | TIMESTAMPTZ | Marca de tiempo de la carga por lotes |
| batch_acknowledged_time | TIMESTAMPTZ | Marca de tiempo del lote cuando LSN está asignado al publicador |
| tamaño del lote | int | Tamaño del lote (en bytes) |