Dela via


Azure Database för PostgreSQL-speglingsfunktion i Microsoft Fabric

Spegling i Fabric ger en enkel upplevelse för att undvika komplex ETL (Extrahera, Transformera, Ladda) och integrera din befintliga Azure Databas för PostgreSQL– flexibla servertillstånd med övriga 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.

Arkitektur

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

När speglingen i Fabric har upprättats för en databas i en PostgreSQL-instans med flexibel server på Azure Database, skapar en bakgrundsprocess i PostgreSQL en initial ögonblicksbild för de valda tabellerna som ska speglas, och denna överförs i Parquet-format till en landningszon i Fabric OneLake. En replikatorprocess som körs i Fabric tar dessa första ögonblicksbildsfiler och skapar Delta-tabeller i den speglade databasartefakten.

Efterföljande ändringar som tillämpas på valda tabeller samlas också in i källdatabasen och skickas till OneLake-landningszonen i batchar 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 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.

Förutsättningar

Flera krav måste konfigureras innan du använder Fabric mirroring i Azure Database för PostgreSQL flexibel serverinstans.

  • Systemtilldelad hanterad identitet (SAMI) måste vara aktiverad.\

    • Det här är den identitet som används av Azure CDC för att autentisera kommunikation med Fabric OneLake, kopiera initiala snapshots och ändra batchar för landningszonen.
  • wal_level serverparameter måste anges till "logisk".

    • Aktiverar logisk replikering för källservern.

    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).

  • max_worker_processes serverparametern måste ökas för att hantera fler bakgrundsprocesser för spegling.

En ny sida är tillgänglig i Azure-portalen för att automatisera nödvändig konfiguration 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 kan du välja databaserna för att aktivera Fabric-spegling (upp till 3 som standard, men detta kan ökas genom att ändra serverparametern max_mirrored_databases) och sedan välja Förbered.

Arbetsflödet visar popup-fönstret Starta om server, och genom att välja Starta om kan du starta processen, vilket automatiserar alla återstående konfigurationssteg, och du kan börja skapa en speglad databas från användargränssnittet för Infrastruktur

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

Serverparametrar

Dessa serverparametrar påverkar direkt Fabric-spegling för Azure Database for PostgreSQL.

  • 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.

Bildskärm

Övervakning av Fabric-spegling i Azure Database for PostgreSQL – flexibla serverinstanser är viktigt för att se till att speglingsprocessen körs smidigt och effektivt. Genom att övervaka statusen för de speglade databaserna kan du identifiera eventuella problem och vidta korrigerande åtgärder efter behov.

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

Övervakningsfunktioner

Med speglingsfunktionen för Fabric-spegling i Azure Database for PostgreSQL kan du replikera dina PostgreSQL-databaser till Microsoft Fabric sömlöst, vilket möjliggör 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:

    • Kolumnnamnen innehåller inte något av följande tecken: [ ;{}\n\t=()]
    • Kolumntyperna är något av följande:
      • 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-null- och icke-partipolitiskt index

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. Använd den här tabellen för att avgöra vilken batch som redan har registrerats och laddats upp till Fabric OneLake. Med kolumnen last_written_lsn kan du förstå om en viss transaktion i din källdatabas redan har skickats 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
last_received_lsn pg_lsn Senaste LSN mottagen
server_lsn pg_lsn aktuell server-LSN (vid den tidpunkt då avbildningen av den här batchen slutfördes)
is_batch_uploaded bool Om batchen laddas upp
is_batch_acknowledged bool Huruvida vi har bekräftat wal_sender för dessa batchdata(last_written_lsn)
batch_start_time TIMESTAMPTZ Tidsstämpel för batchstarten
batch_completion_time TIMESTAMPTZ Tidsstämpel för batchens slutförande
batch_uploaded_time TIMESTAMPTZ Tidsstämpel för batchuppladdningen
batch_acknowledged_time TIMESTAMPTZ Tidsstämpel för batchen när LSN bekräftas till utgivaren
batch_size int Batchens storlek (i byte)