Freigeben über


Azure-Datenbank für PostgreSQL-Spiegelung in Microsoft Fabric

Die Spiegelung in Fabric bietet eine einfache Erfahrung, um komplexes ETL (Extract Transform Load) zu vermeiden und Ihren vorhandenen Azure Database for PostgreSQL – Flexibler Server-Bestand in Ihre restlichen Daten in Microsoft Fabric zu integrieren. Sie können Ihre vorhandene Azure-Datenbank für PostgreSQL kontinuierlich direkt in Fabric OneLake replizieren. Innerhalb von Fabric können Sie leistungsstarke Business Intelligence, künstliche Intelligenz, Datentechnik, Data Science- und Datenfreigabeszenarien nutzen.

Architektur

Die Fabric-Spiegelung in Azure Database for PostgreSQL basiert auf Konzepten wie der logischen Replikation und dem Entwurfsmuster der Änderungsdatenerfassung (CDC).

Nachdem die Fabric-Spiegelung für eine Datenbank in einer Azure Database for PostgreSQL – Flexibler Server-Instanz eingerichtet wurde, erstellt ein PostgreSQL-Hintergrundprozess eine anfängliche Momentaufnahme im Parquet-Format für ausgewählte Tabellen, die in eine Fabric OneLake-Zielzone übertragen werden. Ein repliziererischer Prozess, der in Fabric ausgeführt wird, übernimmt diese anfänglichen Momentaufnahmendateien und erstellt Delta-Tabellen im Gespiegelten Datenbankartefakt.

Nachfolgende Änderungen, die auf ausgewählte Tabellen angewendet werden, werden auch in der Quelldatenbank erfasst und in Batches an die OneLake-Zielzone gesendet, um auf die entsprechenden Delta-Tabellen im Gespiegelten Datenbankartefakt angewendet zu werden.

Diagramm der End-to-End-Architektur für die Fabric-Spiegelung in einer Azure-Datenbank für flexible Serverinstanz von PostgreSQL.

Was ist Change Data Capture (CDC)?

Change Data Capture (CDC) ist eine Methode, mit der Anwendungen An einer Datenbank vorgenommene Änderungen erkennen und erfassen können.

Es basiert nicht auf expliziten SQL-Abfragen, um Änderungen nachzuverfolgen.

Stattdessen umfasst sie einen kontinuierlichen Datenstrom von Änderungsereignissen, die vom Datenbankserver veröffentlicht werden.

Clients können diesen Datenstrom abonnieren, um Änderungen zu überwachen, sich auf bestimmte Datenbanken, einzelne Tabellen oder sogar Teilmengen von Spalten in einer Tabelle zu konzentrieren.

Für die Fabric-Spiegelung wird das CDC-Muster in einer proprietären PostgreSQL-Erweiterung namens azure_cdc implementiert. Die Steuerungsebene für eine flexible Serverinstanz von Azure Database für PostgreSQL wird während des Fabric-Spiegelungs-Aktivierungsworkflows in Quelldatenbanken installiert und registriert.

Azure Change Data Capture (CDC)-Erweiterung

Azure CDC ist eine Erweiterung für PostgreSQL, die die Funktionen der logischen Decodierung verbessert.

Es interpretiert und transformiert Write-Ahead Log (WAL)-Daten in ein verständliches logisches Format.

Die Erweiterung konvertiert Datenbankänderungen in eine Abfolge logischer Vorgänge wie INSERT, UPDATE und DELETE.

Azure CDC ist eine Ebene über dem integrierten logischen Decodierungs-Plug-In von PostgreSQL. pgoutput

Azure CDC exportiert Tabellenmomentaufnahmen und Änderungen als Parquet-Dateien und kopiert sie zur nachfolgenden Verarbeitung in eine Fabric OneLake-Zielzone.

Aktivieren der Fabric-Spiegelung im Azure-Portal

Fabric-Mirroring im Azure-Portal für eine flexible Azure-Datenbank für PostgreSQL-Server-Instanz ermöglicht es Ihnen, Ihre PostgreSQL-Datenbanken in Microsoft Fabric zu replizieren. Mit diesem Feature können Sie Ihre Daten nahtlos in andere Dienste in Microsoft Fabric integrieren und erweiterte Analysen, Business Intelligence und Data Science-Szenarien ermöglichen. Indem Sie ein paar einfache Schritte im Azure-Portal ausführen, können Sie die erforderlichen Voraussetzungen konfigurieren und mit der Spiegelung Ihrer Datenbanken beginnen, um das volle Potenzial von Microsoft Fabric zu nutzen.

Voraussetzungen

Mehrere Voraussetzungen müssen konfiguriert werden, bevor die Fabric Mirroring-Funktion in Azure Database for PostgreSQL für flexible Server-Instanzen verwendet werden kann.

  • Vom System zugewiesene verwaltete Identität (Managed Identity, SAMI) muss aktiviert sein.\

    • Dies ist die Identität, die von Azure CDC verwendet wird, um die Kommunikation mit Fabric OneLake zu authentifizieren, anfängliche Momentaufnahmen zu kopieren und Batches in die Landezone zu verschieben.
  • wal_level Serverparameter muss auf "logical" festgelegt werden.

    • Aktiviert die logische Replikation für den Quellserver.

    Die Azure CDC-Erweiterung (azure_cdc) wird auf dem Quellserver vorinstalliert und für ausgewählte Datenbanken für die Spiegelung registriert (es ist ein Neustart erforderlich).

  • max_worker_processes Serverparameter muss erhöht werden, um mehr Hintergrundprozesse für die Spiegelung zu berücksichtigen.

Eine neue Seite ist im Azure-Portal verfügbar, um die Erforderliche Konfiguration auf dem Quellserver zu automatisieren.

Screenshot der Seite Neue Fabric-Spiegelung im Azure-Portal zum Starten der Aktivierung.

Wählen Sie "Erste Schritte " aus, um den Aktivierungsworkflow zu initiieren.

Screenshot der Seite

Diese Seite zeigt den aktuellen Status der erforderlichen Voraussetzungen an. Wenn die vom System zugewiesene verwaltete Identität (System Assigned Managed Identity, SAMI) für diesen Server nicht aktiviert ist, wählen Sie den Link aus, der an die Seite umgeleitet werden soll, auf der Sie dieses Feature aktivieren können.

Nachdem Sie fertig sind, können Sie die Datenbanken auswählen, um die Fabric-Spiegelung zu aktivieren (standardmäßig bis zu 3, dies kann jedoch durch Ändern des max_mirrored_databases Serverparameters erhöht werden), und wählen Sie dann "Vorbereiten" aus.

Der Workflow zeigt ein Popupmenü "Server neu starten" an, und indem Sie "Neu starten" auswählen, können Sie den Prozess starten, der alle verbleibenden Konfigurationsschritte automatisiert, und Sie können mit dem Erstellen der gespiegelten Datenbank über die Fabric-Benutzeroberfläche beginnen.

Fabric-Spiegelungsseite, auf der der Server für die Spiegelung bereit ist.

Serverparameteren

Diese Serverparameter wirken sich direkt auf die Fabric-Spiegelung für Azure-Datenbank für PostgreSQL aus.

  • Azure.fabric_mirror_enabled: Der Standardwert ist deaktiviert. Dieser Parameter gibt das Flag an, das angibt, ob die Spiegelung auf dem Server aktiviert ist. Sie wird automatisch am Ende des Serveraktivierungsworkflows festgelegt, sodass Sie ihn nicht manuell ändern sollten.

  • max_replication_slots: Standardwert 10. Wir nutzen einen Replikationsplatz pro gespiegelter Datenbank, aber Kunden können dies erhöhen, wenn sie mehr Spiegel erstellen oder andere Replikationsplätze für andere Zwecke (logische Replikation) erstellt haben.

  • max_wal_senders: Der Standardwert ist 10. Wie beim vorherigen Parameter verwenden wir einen wal Absenderprozess pro Spiegelung, der bei der Spiegelung weiterer Datenbanken erhöht werden sollte.

  • max_worker_processes: Der Standardwert ist 8. Nach der anfänglichen Momentaufnahme verwenden wir einen Prozess pro gespiegelter Datenbank oder wo die Spiegelung aktiviert ist (es wurde jedoch noch kein gespiegeltes Artefakt in Fabric erstellt). Sie müssen diesen Wert erhöhen, wenn Sie andere Erweiterungen oder Workloads mit mehr Arbeitsprozessen verwenden.

  • max_parallel_workers: Der Standardwert ist 8, wodurch die Anzahl der Worker-Prozesse beschränkt wird, die parallel ausgeführt werden können. Wenn Sie mehrere Spiegelungssitzungen auf demselben Server aktivieren, können Sie diesen Parameter erhöhen, um mehr parallele Vorgänge zu ermöglichen (z. B. das Erhöhen der Parallelität in anfänglichen Momentaufnahmen).

  • azure_cdc.max_fabric_mirrors Der Standardwert ist 3. Kunden können diesen Wert erhöhen, wenn sie mehr als drei Datenbanken auf diesem Server spiegeln müssen. Es ist wichtig zu berücksichtigen, dass jede neue gespiegelte Datenbank Serverressourcen verbraucht (fünf Hintergrundprozesse, die CPU- und Speicherressourcen für die Erstellung von Snapshots und Änderungenbatches nutzen). Daher sollten Sie abhängig davon, wie ausgelastet Ihr Server ist, die Ressourcenauslastung überwachen und die Rechengröße auf die nächste verfügbare Größe skalieren, wenn die CPU- und Speicherauslastung ständig über 80% liegt oder die Leistung nicht Ihren Erwartungen entspricht.

  • azure_cdc.max_snapshot_workers: Der Standardwert ist 3. Maximale Anzahl von Arbeitsprozessen, die während der ersten Momentaufnahmeerstellung verwendet werden. Erhöhen Sie dies, um die Erstellung der ersten Momentaufnahme zu beschleunigen, wenn die Anzahl der gespiegelten Datenbanken erhöht wird. Sie sollten jedoch alle anderen Hintergrundprozesse berücksichtigen, die im System ausgeführt werden, bevor Sie dies tun.

  • azure_cdc.change_batch_buffer_size: Der Standardwert ist 16 MB. Maximale Puffergröße (in MB) für Änderungs-Batch. Die Tabelle zeigt, wie viele Daten gepuffert werden, bevor sie auf den lokalen Datenträger geschrieben werden. Abhängig von der Datenänderungshäufigkeit ihrer gespiegelten Datenbanken können Sie diesen Wert optimieren, um die Änderungsbatchfrequenz zu reduzieren oder sie zu erhöhen, wenn Sie den gesamtdurchsatz priorisieren möchten.

  • azure_cdc.change_batch_export_timeout: Der Standardwert ist 30. Maximale Leerlaufzeit (in Sekunden) zwischen Änderungsbatchnachrichten. Bei Überschreitung markieren wir den aktuellen Batch als abgeschlossen. Abhängig von der Datenänderungshäufigkeit ihrer gespiegelten Datenbanken können Sie diesen Wert optimieren, um die Änderungsbatchfrequenz zu reduzieren oder sie zu erhöhen, wenn Sie den gesamtdurchsatz priorisieren möchten.

  • azure_cdc.parquet_compression: Der Standardwert ist ZSTD. Dieser Parameter ist nur für die interne Verwendung vorgesehen, daher sollten Sie ihn nicht ändern.

  • azure_cdc.snapshot_buffer_size: Standardmäßig 1000. Die maximale Größe (in MB) des anfänglichen Momentaufnahmepuffers. Laut der Tabelle werden viele Daten bis zu diesem Punkt gepuffert, bevor sie an Fabric gesendet werden. Denken Sie daran, dass azure_cdc.snapshot_size*azure_cdc.max_snapshot_workers der gesamte Speicherpuffer ist, der während der anfänglichen Momentaufnahme verwendet wird.

  • azure_cdc.snapshot_export_timeout: Standardmäßig 180. Maximale Zeit (in Minuten), um die anfängliche Momentaufnahme zu exportieren. Wenn die maximale Zeit überschritten wird, wird sie neu gestartet.

Monitor

Die Überwachung der Fabric-Spiegelung in Azure-Datenbank für flexible Server-Instanzen von PostgreSQL ist unerlässlich, um sicherzustellen, dass der Spiegelungsprozess reibungslos und effizient ausgeführt wird. Indem Sie den Status der gespiegelten Datenbanken überwachen, können Sie mögliche Probleme identifizieren und bei Bedarf Korrekturmaßnahmen ergreifen.

Sie können mehrere benutzerdefinierte Funktionen und Tabellen verwenden, um wichtige CDC-Metriken in der Azure-Datenbank für flexible Serverinstanzen von PostgreSQL zu überwachen und probleme mit dem Spiegelungsprozess in Fabric zu beheben.

Überwachungsfunktionen

Mit der Spiegelungsfunktion für Fabric-Spiegelung in Azure Database for PostgreSQL können Sie Ihre PostgreSQL-Datenbanken nahtlos in Microsoft Fabric replizieren und erweiterte Analyse- und Datenintegrationsszenarien ermöglichen.

  • azure_cdc.list_tracked_publications(): Gibt für jede Publikation in der flexiblen Quellserverinstanz eine durch Trennzeichen getrennte Zeichenfolge zurück, die die folgenden Informationen enthält - publicationName (text) - includeData (bool) - includeChanges (bool) - active (bool) - baseSnapshotDone (bool) - generationId (int)

  • azure_cdc.publication_status('pub_name'): Für jede Publikation in der Quelle gibt die flexible Serverinstanz eine durch Trennzeichen getrennte Zeichenfolge mit den folgenden Informationen zurück.

    • <status, start_lsn, stop_lsn, flush_lsn>.
    • Der Status besteht aus ["Slot-Name", "Ursprung-Name", "CDC-Datenzielpfad", "Aktiv", "Schnappschuss abgeschlossen", "Fortschrittsprozentsatz", "Generation-ID", "Abgeschlossene Batch-ID", "Hochgeladene Batch-ID", "CDC-Startzeit"]
  • azure_cdc.is_table_mirrorable('schema_name','table_name'): Gibt anhand des angegebenen Schema- und Tabellennamens zurück, ob die Tabelle spiegelbar ist. Damit eine Tabelle spiegelbar ist, muss sie folgendes erfüllen:

    • Die Spaltennamen enthalten keines der folgenden Zeichen: [ ;{}\n\t=()]
    • Die Spaltentypen sind eine der folgenden:
      • 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
    • Die Tabelle ist keine Sicht, materialisierte Sicht, Fremdtabelle, Popuptabelle oder partitionierte Tabelle.
    • Die Tabelle verfügt über einen Primärschlüssel oder einen eindeutigen, nicht nulligen und nichtpartiellen Index.

Verfolgungstabellen

  • azure_cdc.tracked_publications: eine Zeile für jede vorhandene Mirrored-Datenbank in Fabric. Fragen Sie diese Tabelle ab, um den Status jeder Publikation zu verstehen.
Spaltenname Postgres-Typ Explanation
publication_id oid Oid der Publikation
Zielpfad Text Pfad zur Zielzone in Fabric OneLake
Zielformat azure_cdc.data_format Format der Daten in Azure CDC
Daten_einfügen Boolesch Gibt an, ob anfängliche Momentaufnahmedaten in die Publikation eingeschlossen werden sollen.
Änderungen einbeziehen Boolesch Gibt an, ob Änderungen in die Publikation einbezogen werden sollen.
active Boolesch Gibt an, ob die Publikation aktiv ist.
snapshot_done Boolesch Gibt an, ob die Momentaufnahme abgeschlossen ist.
Snapshot-Fortschritt smallint Fortschritt der Momentaufnahme
snapshot_progress_percentage Text Prozentualer Fortschritt der Momentaufnahme
generation_id INT Generationskennung
stream_start_lsn pg_lsn Protokollsequenznummer, an der der Änderungsdatenstrom gestartet wurde
Stream-Startzeit Zeitstempel Zeitstempel, als der Änderungsstream gestartet wurde
stream_stop_lsn pg_lsn Protokollsequenznummer, bei der der Änderungsdatenstrom beendet wurde
Snapshot-Größe bigint Gesamtgröße der Momentaufnahme (in Bytes)
Gesamtzeit INT Gesamtzeit (in Sekunden) für die Publikation
  • azure_cdc.tracked_batches: eine Zeile für jeden erfassten Änderungsbatch, der an Fabric OneLake ausgeliefert wird. Fragen Sie diese Tabelle ab, um zu verstehen, welcher Batch bereits erfasst und in Fabric OneLake hochgeladen wurde. Mit der last_written_lsn Spalte können Sie verstehen, ob eine bestimmte Transaktion in Ihrer Quelldatenbank bereits an Fabric ausgeliefert wurde.
Name Postgres-Typ Explanation
publication_id oid Oid der Publikation
completed_batch_id bigint Sequenznummer(beginnend mit 1) des Batches. Eindeutig für jede Publikation
last_written_lsn pg_lsn LSN des letzten Schreibvorgangs dieses Batches
last_received_lsn pg_lsn Letzte empfangene Protokollfolgenummer (LSN)
server_lsn pg_lsn aktueller Server-LSN (zum Zeitpunkt, als die Erfassung dieses Batches abgeschlossen wurde)
wird_stapelweise_hochgeladen Boolesch Gibt an, ob der Batch hochgeladen wird.
is_batch_acknowledged Boolesch Gibt an, ob für diese Batchdaten (last_written_lsn) der wal_sender bestätigt wurde
Stapel_Startzeit TIMESTAMPTZ Zeitstempel des Batchstarts
Stapelabschlusszeit TIMESTAMPTZ Zeitstempel des Batchabschlusses
Zeitpunkt_der_Stapelupload TIMESTAMPTZ Zeitstempel des Batchuploads
batch_acknowledged_time TIMESTAMPTZ Zeitstempel des Batches, zu dem die LSN beim Herausgeber bestätigt wurde
Batch-Größe INT Größe des Batches (in Byte)