Azure Database for PostgreSQL-replikering i Microsoft Fabric

Spegling i Fabric (nu tillgänglig) ger en enkel upplevelse för att undvika komplex ETL (Extrahera, transformera och ladda) och integrera din befintliga Azure Database for PostgreSQL-miljö med resten av dina data i Microsoft Fabric. Du kan kontinuerligt replikera din befintliga Azure Database for PostgreSQL direkt till Fabric OneLake. I Fabric kan du låsa upp kraftfull affärsintelligens, artificiell intelligens, datateknik, datavetenskap och datadelningsscenarier.

Viktigt!

Nyligen skapade servrar efter Ignite 2025 innehåller automatiskt den senaste allmänna tillgänglighetsversionen av speglingskomponenter. Befintliga servrar uppgraderas progressivt som en del av nästa underhållscykler utan manuella åtgärder. Du behöver inte inaktivera och återaktivera spegling för att ta emot uppdateringar.

Arkitektur

Infrastrukturspegling i Azure Database for PostgreSQL bygger på begrepp som logisk replikering och CDC-designmönster (Change Data Capture).

När du upprättar Fabric-spegling för en databas i en flexibel Azure Database for PostgreSQL-serverinstans skapar en PostgreSQL-bakgrundsprocess en första ögonblicksbild för valda tabeller som ska speglas. Den skickar ögonblicksbilden till en Fabric OneLake-landningszon i Parquet-format. En replikatorprocess som körs i Fabric tar dessa första ögonblicksbildsfiler och skapar Delta-tabeller i den speglade databasartefakten.

Källdatabasen samlar in efterföljande ändringar som tillämpas på valda tabeller. De här ändringarna skickas till OneLake-landningszonen i omgångar som ska tillämpas på respektive Delta-tabeller i den speglade databasartefakten.

Diagram över arkitektur från slutpunkt till slutpunkt för Fabric-spegling i en flexibel Azure Database for PostgreSQL-serverinstans.

Vad är CDC (Change Data Capture)?

Change Data Capture (CDC) är en metod som gör det möjligt för program att identifiera och samla in ändringar som gjorts i en databas.

Den förlitar sig inte på explicita SQL-frågor för att spåra ändringar.

I stället innebär det en kontinuerlig ström av ändringshändelser som publiceras av databasservern.

Klienter kan prenumerera på den här strömmen för att övervaka ändringar, med fokus på specifika databaser, enskilda tabeller eller till och med delmängder av kolumner i en tabell.

För Fabric-spegling implementeras CDC-mönstret i ett proprietärt PostgreSQL-tillägg som kallas azure_cdc. Kontrollplanet för en flexibel Azure Database for PostgreSQL-serverinstans installeras och registreras i källdatabaser under arbetsflödet för infrastrukturspegling.

Azure Change Data Capture-tillägg (CDC)

Azure CDC är ett tillägg för PostgreSQL som förbättrar funktionerna i logisk avkodning.

Den tolkar och transformerar wal-data (Write-Ahead Log) till ett begripligt logiskt format.

Tillägget konverterar databasändringar till en sekvens med logiska åtgärder som INSERT, UPDATE och DELETE.

Azure CDC är ett lager ovanpå PostgreSQL:s inbyggda plugin-program för logisk avkodning, pgoutput.

Azure CDC exporterar ögonblicksbilder och ändringar av tabellen som Parquet-filer och kopierar dem till en Microsoft Fabric OneLake-landningszon för efterföljande bearbetning.

Aktivera infrastrukturspegling i Azure-portalen

Med infrastrukturspegling i Azure-portalen för en flexibel Azure Database for PostgreSQL-serverinstans kan du replikera dina PostgreSQL-databaser till Microsoft Fabric. Den här funktionen hjälper dig att integrera dina data sömlöst med andra tjänster i Microsoft Fabric, vilket möjliggör avancerade analys-, business intelligence- och datavetenskapsscenarier. Genom att följa några enkla steg i Azure-portalen kan du konfigurera nödvändiga förutsättningar och börja spegla dina databaser för att använda den fulla potentialen i Microsoft Fabric.

Versioner som stöds

Azure Database for PostgreSQL stöder PostgreSQL 14 och senare för fabric-spegling.

Förutsättningar

Innan du kan använda Fabric-spegling i en flexibel instans av Azure Database för PostgreSQL måste du konfigurera flera förutsättningar.

  • Systemtilldelad hanterad identitet (SAMI) måste vara aktiverad.
    • Azure CDC använder den här identiteten för att autentisera kommunikationen med Fabric OneLake, kopiera initiala ögonblicksbilder och ändra batchar till landningszonen.

Du konfigurerar ytterligare krav via ett dedikerat aktiveringsarbetsflöde som beskrivs i följande avsnitt. Dessa förutsättningar är:

  • wal_level serverparameter måste anges till "logisk".

    • Aktiverar logisk replikering för källservern.
  • max_worker_processes serverparametern måste ökas för att hantera fler bakgrundsprocesser för spegling.

  • azure_cdc tillägg. Azure CDC-tillägget (azure_cdc) är förinläst på källservern och registrerats för att valda databaser ska speglas (det kräver omstart).

En ny sida är tillgänglig i Azure-portalen för att automatisera dessa nödvändiga konfigurationer på källservern.

Skärmbild som visar sidan New Fabric mirroring i Azure-portalen för att starta aktiveringen.

Välj Kom igång för att initiera aktiveringsarbetsflödet.

Skärmbild som visar sidan Ny Fabric-spegling i Azure-portalen för utvalda databaser.

Den här sidan visar aktuell status för nödvändiga förutsättningar. Om systemtilldelad hanterad identitet (SAMI) inte är aktiverad för den här servern väljer du länken som ska omdirigeras till sidan där du kan aktivera den här funktionen.

När du är klar väljer du databaserna för att aktivera Fabric-spegling (upp till tre som standard, men du kan öka denna gräns genom att ändra serverparametern max_mirrored_databases) och sedan välja Förbered.

Arbetsflödet visar popup-fönstret Starta om server. Genom att välja Starta om startar du processen. Arbetsflödet automatiserar alla återstående konfigurationssteg. Du kan börja skapa din speglade databas från Fabric-användargränssnittet.

Fabric-speglingssida som visar att servern är redo för spegling.

Skapa en databasroll för Fabric Mirroring

Därefter måste du ange eller skapa en PostgreSQL-roll för Fabric-tjänsten för att ansluta till din flexibla Azure Database for PostgreSQL-server.

Du kan utföra den här uppgiften genom att ange en databasroll för att ansluta till källsystemet.

Anmärkning

Både Entra-ID och lokala databasroller stöds för att ansluta Fabric-spegling till Azure Database for PostgreSQL, välj den autentiseringsmetod som bäst passar dina syften.

Använda en databasroll

  1. Anslut till Azure Database for PostgreSQL med Visual Studio Code eller pgAdmin. Anslut med en huvudansvarig som är medlem i rollen azure_pg_admin.

  2. Skapa en PostgreSQL-roll med namnet fabric_user. Du kan välja valfritt namn för den här rollen. Ange ditt eget starka lösenord. Bevilja de behörigheter som krävs för infrastrukturspegling i databasen. Kör följande SQL-skript för att bevilja behörigheterna CREATEDB, CREATEROLE, LOGIN, REPLICATIONoch azure_cdc_admin till den nya rollen med namnet 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. Databasanvändaren som du skapar måste också vara owner av tabellerna som ska replikeras i den speglade databasen. Det här kravet innebär att användaren skapar tabellerna eller ändrar ägarskapet för dessa tabeller med hjälp ALTER TABLE <table name here> OWNER TO fabric_user;av .

Viktigt!

Om något av de tidigare säkerhetskonfigurationsstegen saknas kommer efterföljande speglade åtgärder i Fabric-portalen att misslyckas med ett Internal error-meddelande.

Serverparametrar

Dessa serverparametrar påverkar direkt Fabric-spegling för Azure Database for PostgreSQL och kan användas för att justera replikeringsprocessen till Fabric OneLake:

  • Azure.fabric_mirror_enabled: Standardvärdet är inaktiverat. Den här parametern anger flaggan som anger om spegling är aktiverat på servern. Den ställs in automatiskt i slutet av arbetsflödet för serveraktivering, så du bör inte ändra den manuellt.

  • max_replication_slots: Standardvärde 10. Vi använder ett replikeringsfack per speglad databas, men kunderna kan överväga att öka detta om de skapar fler speglar eller har andra replikeringsplatser som skapats för andra ändamål (logisk replikering).

  • max_wal_senders: Standardvärdet är 10. Precis som med föregående parameter använder vi en wal avsändarprocess per spegling, vilket bör ökas vid spegling av fler databaser.

  • max_worker_processes: Standardvärdet är 8. Efter den första ögonblicksbilden använder vi en process för varje speglad databas eller där spegling är aktiverad (men ingen speglad artefakt har skapats i Fabric ännu). Du måste öka det här värdet om du har andra tillägg eller arbetsbelastningar med fler arbetsprocesser.

  • max_parallel_workers: Standardvärdet är 8, vilket begränsar antalet arbetare som kan köras samtidigt. Om du aktiverar flera speglingssessioner på samma server kan du överväga att öka den här parametern så att fler parallella åtgärder tillåts (till exempel ökad parallellitet i inledande ögonblicksbilder).

  • azure_cdc.max_fabric_mirrors Standardvärdet är 3. Kunder kan öka det här värdet om de behöver spegla fler än tre databaser på den här servern. Det är viktigt att tänka på att varje ny speglad databas förbrukar serverresurser (fem bakgrundsprocesser som använder processor- och minnesresurser för att skapa ögonblicksbilder och ändra batchbearbetning), så beroende på hur upptagen servern är bör du övervaka resursanvändningen och skala upp beräkningsstorleken till nästa tillgängliga storlek om processor- och minnesanvändningen ständigt överstiger 80% eller prestanda inte är vad du förväntar dig.

  • azure_cdc.max_snapshot_workers: Standardvärdet är 3. Maximalt antal arbetsprocesser som användes när ögonblicksbilden skapades. Öka detta för att påskynda skapandet av första ögonblicksbilder när du ökar antalet speglade databaser. Du bör dock överväga alla andra bakgrundsprocesser som körs i systemet innan du gör det.

  • azure_cdc.change_batch_buffer_size: Standardvärdet är 16 MB. Maximal buffertstorlek (i MB) för ändringsbatch. Tabellen visar att mycket data buffras upp till detta innan de skrivs till den lokala disken. Beroende på dataändringsfrekvensen för dina speglade databaser kan du justera det här värdet för att minska frekvensen för ändringsbatch eller öka det om du vill prioritera det övergripande dataflödet.

  • azure_cdc.change_batch_export_timeout: Standardvärdet är 30. Maximal inaktivitetstid (i sekunder) mellan ändra batchmeddelanden. När den överskrids markerar vi den aktuella batchen som slutförd. Beroende på dataändringsfrekvensen för dina speglade databaser kan du justera det här värdet för att minska frekvensen för ändringsbatch eller öka det om du vill prioritera det övergripande dataflödet.

  • azure_cdc.parquet_compression: Standardvärdet är ZSTD. Den här parametern är endast avsedd för internt bruk, så du bör inte ändra den.

  • azure_cdc.snapshot_buffer_size: Standardvärdet är 1 000. Den maximala storleken (i MB) för den första ögonblicksbildbufferten. Enligt tabellen buffras mycket data upp till detta innan de skickas till fabric. Kom ihåg att azure_cdc.snapshot_buffer_size*azure_cdc.max_snapshot_workers är den totala minnesbufferten som användes under den första ögonblicksbilden.

  • azure_cdc.snapshot_export_timeout: Standardvärdet är 180. Maximal tid (i minuter) för att exportera den första ögonblicksbilden. Om den maximala tiden överskrids startas den om.

  • azure_cdc.prune_local_batches: Standardvärdet är True. Om det är inställt, ta bort batchdata från den lokala disken när den har laddats upp och bekräftats av wal_sender.

Bildskärm

Det är viktigt att övervaka fabric-speglingen i flexibla serverinstanser i Azure Database for PostgreSQL för att säkerställa att speglingsprocessen fungerar smidigt och effektivt. Genom att övervaka statusen för de speglade databaserna kan du identifiera eventuella problem och vidta korrigerande åtgärder.

Du kan använda flera användardefinierade funktioner och tabeller för att övervaka viktiga CDC-mått i Azure Database for PostgreSQL– flexibla serverinstanser och felsöka speglingsprocessen till Fabric.

Övervakningsfunktioner

Speglingsfunktionen för infrastrukturspegling i Azure Database for PostgreSQL replikerar dina PostgreSQL-databaser till Microsoft Fabric sömlöst, så att du kan använda avancerade analys- och dataintegreringsscenarier.

  • azure_cdc.list_tracked_publications(): För varje publikation i den flexibla källserverinstansen returnerar en kommaavgränsad sträng som innehåller följande information

    • publicationName (text)
    • includeData (bool)
    • includeChanges (bool)
    • aktiv (bool)
    • baseSnapshotDone (bool)
    • generationId (int)
  • azure_cdc.publication_status('pub_name'): För varje publikation i källan returnerar den flexibla serverinstansen en kommaavgränsad sträng med följande information

    • <status, start_lsn, stop_lsn, flush_lsn>.
    • Status består av ["Slot name", "Origin name", "CDC data destination path", "Active", "Snapshot slutförd", "Progress percentage", "Generation ID", "Completed Batch ID", "Uploaded Batch ID", "CDC start time"]
  • azure_cdc.is_table_mirrorable('schema_name','table_name'): Givet schema- och tabellnamn returneras om tabellen är speglingsbar. För att en tabell ska vara speglingsbar måste den uppfylla följande villkor:

    • Kolumnnamnen innehåller inte något av följande tecken: [ ;{}\n\t=()]
    • Kolumntyperna är en av följande typer:
      • 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
    • Tabellen är inte en vy, materialiserad vy, utländsk tabell, toast-tabell eller partitionerad tabell
    • Tabellen har en primärnyckel eller ett unikt, icke-nullbart och icke-partipolitiskt index. Om dessa krav inte uppfylls fungerar mirroring fortfarande med replikidentiteten FULL, men detta kommer att ha stor inverkan på den allmänna replikeringsprestandan och WAL-användningen. Vi rekommenderar att du har en primärnyckel eller ett unikt index för tabeller med icke-trivial storlek.

Spårningstabeller

  • azure_cdc.tracked_publications: en rad för varje befintlig speglad databas i Fabric. Fråga den här tabellen för att förstå statusen för varje publikation.
Kolumnnamn Postgres-typ Förklaring
publication_id oid Publikationens Oid
destination_path text Sökväg till landningszonen i Fabric OneLake
destination_format azure_cdc.data_format Format för data i Azure CDC
include_data bool Om du vill ta med initiala ögonblicksbilddata i publikationen
include_changes bool Om ändringar ska inkluderas i publikationen
active bool Om publikationen är aktiv
snapshot_done bool Om ögonblicksbilden har slutförts
snapshot_progress smallint Förlopp för ögonblicksbilden
snapshot_progress_percentage text Procentuellt framsteg av ögonblicksbilden
generation_id int Generationsidentifierare
stream_start_lsn pg_lsn Loggsekvensnummer där ändringsströmmen startade
stream_start_time timestamp Tidsstämpel när ändringsströmmen startade
stream_stop_lsn pg_lsn Loggsekvensnummer där ändringsströmmen stoppades
snapshot_size bigint Total storlek på ögonblicksbilden (i byte)
total_time int Total tid (i sekunder) för publikationen
  • azure_cdc.tracked_batches: en rad för varje ändringsbatch som samlas in och levereras till Fabric OneLake. Gör en förfrågan mot den här tabellen för att se vilken batch som redan har registrerats och laddats upp till Fabric OneLake. Genom kolumnen last_written_lsn kan du förstå om en viss transaktion i din källdatabas redan har överförts till Fabric.
Namn Postgres-typ Förklaring
publication_id oid Publikationens Oid
completed_batch_id bigint Sekvensnummer för satsen (startar från 1). Unikt per publikation
last_written_lsn pg_lsn LSN för den senaste skrivning av den här batchen
  • azure_cdc.tracked_tables: en rad för varje tabell som spåras i alla publikationer. Innehåller följande fält för alla publicerade tabeller i alla publikationer. Om en tabell ingår i två publikationer visas den två gånger.
Namn Postgres-typ Förklaring
publication_id oid Publikationens Oid
table_oid oid Oid för tabellen
sequence_number bigint sekvensnummer för den genererade filen