Condividi tramite


Mirroring di Database di Azure per PostgreSQL in Microsoft Fabric

SI APPLICA A: Database di Azure per PostgreSQL - Server flessibile

Il mirroring in Fabric offre un'esperienza semplice per evitare ETL (Extract Transform Load) complessi e integrare il patrimonio esistente del server flessibile di Database di Azure per PostgreSQL con il resto dei dati in Microsoft Fabric. È possibile replicare continuamente il server flessibile di Database di Azure per PostgreSQL esistente direttamente in Fabric OneLake. All'interno di Fabric è possibile sbloccare potenti scenari di business intelligence, intelligenza artificiale, ingegneria dei dati, data science e condivisione dei dati.

Architettura

Il mirroring di Fabric nel server flessibile di Database di Azure per PostgreSQL si basa su concetti come la replica logica e lo schema progettuale CDC (Change Data Capture).

Dopo aver stabilito il mirroring di Fabric per un database in Azure Database per un server flessibile PostgreSQL, un processo in background di PostgreSQL crea uno snapshot iniziale per le tabelle selezionate da sottoporre a mirroring, che viene fornito a una zona di destinazione di Fabric OneLake in formato Parquet. Un processo di replicazione in esecuzione in Fabric accetta questi file di snapshot iniziali e crea tabelle Delta nell'artefatto del database replicato.

Le modifiche successive applicate alle tabelle selezionate vengono acquisite anche nel database di origine e inviate alla zona di destinazione OneLake in batch da applicare alle rispettive tabelle Delta nell'artefatto del database con mirroring.

Diagramma dell'architettura end-to-end per il mirroring di Fabric nel database flessibile di Azure per PostgreSQL.

Che cos'è Change Data Capture (CDC)?

Change Data Capture (CDC) è un metodo che consente alle applicazioni di rilevare e acquisire le modifiche apportate a un database.

Non si basa su query SQL esplicite per tenere traccia delle modifiche.

Implica invece un flusso continuo di eventi di modifica pubblicati dal server di database.

I client possono sottoscrivere questo flusso per monitorare le modifiche, concentrandosi su database specifici, singole tabelle o persino subset di colonne all'interno di una tabella.

Per il mirroring dell'infrastruttura, il modello CDC viene implementato in un'estensione PostgreSQL proprietaria denominata azure_cdc. Il piano di controllo del server flessibile del Database di Azure per PostgreSQL viene installato e registrato nei database di origine durante il flusso di lavoro di abilitazione del mirroring Fabric.

Estensione Azure Change Data Capture (CDC)

Azure CDC è un'estensione per PostgreSQL che migliora le funzionalità di decodifica logica.

Interpreta e trasforma i dati Write-Ahead log (WAL) in un formato logico comprensibile.

L'estensione converte le modifiche del database in una sequenza di operazioni logiche come INSERT, UPDATE e DELETE.

Azure CDC è un livello sopra il plug-in di decodifica logica predefinito di PostgreSQL, pgoutput.

Azure CDC esporta istantanee e modifiche delle tabelle come file Parquet e le copia in una zona di atterraggio di Fabric OneLake per l'elaborazione successiva.

Abilitare il mirroring di Fabric nel portale di Azure

Il mirroring di Fabric nel portale di Azure per i server flessibili di Azure Database per PostgreSQL consente di replicare i database PostgreSQL in Microsoft Fabric. Questa funzionalità consente di integrare facilmente i dati con altri servizi in Microsoft Fabric, abilitando scenari avanzati di analisi, business intelligence e data science. Seguendo alcuni semplici passaggi nel portale di Azure, è possibile configurare i prerequisiti necessari e avviare il mirroring dei database per usare il potenziale completo di Microsoft Fabric.

Prerequisiti

Prima di usare il mirroring di Fabric in Azure Database per il server PostgreSQL flessibile, è necessario configurare diversi prerequisiti.

  • L'identità gestita assegnata dal sistema (SAMI) deve essere abilitata.\

    • Si tratta dell'identità usata da Azure CDC per autenticare le comunicazioni con Fabric OneLake, copiare gli snapshot iniziali e modificare i batch nella zona di destinazione.
  • wal_level parametro del server deve essere impostato su "logico".

    • Abilita la replica logica per il server di origine.

    L'estensione Azure CDC (azure_cdc) viene precaricata nel server di origine e registrata per i database selezionati per il mirroring (richiede il riavvio).

  • max_worker_processes parametro del server deve essere aumentato per supportare più processi in background per il mirroring.

Nel portale di Azure è disponibile una nuova pagina per automatizzare la configurazione dei prerequisiti nel server di origine.

Nuova pagina di mirroring del Fabric nel portale di Azure per automatizzare la configurazione dei prerequisiti.

Selezionare Inizia per avviare il flusso di lavoro di abilitazione.

Nuova pagina di mirroring di Fabric nel portale di Azure per automatizzare la configurazione dei prerequisiti.

Questa pagina mostra lo stato corrente dei prerequisiti necessari. Se l'identità gestita assegnata dal sistema (SAMI) non è abilitata per questo server, selezionare il collegamento da reindirizzare alla pagina in cui è possibile abilitare questa funzionalità.

Al termine, è possibile selezionare i database per abilitare il mirroring dell'infrastruttura (fino a 3 per impostazione predefinita, ma questo può essere aumentato modificando il parametro del server max_mirrored_databases ) e quindi selezionare Prepara.

Il flusso di lavoro presenta un popup Riavvia server e selezionando Riavvia, è possibile avviare il processo, che automatizza tutti i passaggi di configurazione rimanenti ed è possibile iniziare a creare il database con mirroring dall'interfaccia utente di Fabric

La pagina di mirroring di Fabric mostra che il server è pronto per il mirroring.

Parametri del server

Questi parametri del server influiscono direttamente sul mirroring Fabric per Azure Database per PostgreSQL.

  • Azure.fabric_mirror_enabled: per impostazione predefinita è disattivato. Questo parametro specifica il flag che indica se il mirroring è abilitato nel server. Viene impostato automaticamente alla fine del flusso di lavoro di abilitazione del server, quindi non è consigliabile modificarlo manualmente.

  • ** max_replication_slots **: valore predefinito 10. Viene utilizzato uno slot di replica per ogni database con mirroring, ma i clienti potrebbero prendere in considerazione un aumento nel caso in cui creino più mirror o abbiano altri slot di replica creati per altri scopi (replica logica).

  • max_wal_senders: il valore predefinito è 10. Come per il parametro precedente, viene usato un wal processo mittente per mirror, che deve essere aumentato quando si esegue il mirroring di più database.

  • max_worker_processes: il valore predefinito è 8. Dopo lo snapshot iniziale, viene usato un processo per ogni database con mirroring o in cui è abilitato il mirroring (ma non è ancora stato creato alcun artefatto con mirroring in Fabric). È necessario aumentare questo valore se sono presenti altre estensioni o carichi di lavoro che usano più processi di lavoro.

  • max_parallel_workers: il valore predefinito è 8, che limita il numero di ruoli di lavoro che possono essere eseguiti contemporaneamente. Se si abilitano più sessioni di mirroring nello stesso server, è consigliabile aumentare questo parametro per consentire più operazioni parallele, ad esempio aumentando il parallelismo negli snapshot iniziali.

  • azure_cdc.max_fabric_mirror Il valore predefinito è 3. I clienti possono aumentare questo valore se devono eseguire il mirroring di più di tre database in questo server. È importante considerare che ogni nuovo database con mirroring utilizza risorse server (cinque processi in background che usano risorse CPU e memoria per la creazione e l'invio in batch di modifiche di snapshot), quindi, a seconda di quanto sia occupato il server, è consigliabile monitorare l'utilizzo delle risorse e aumentare le dimensioni di calcolo fino alle dimensioni successive disponibili se l'utilizzo della CPU e della memoria supera costantemente i 80% o le prestazioni non sono quelle previste.

  • azure_cdc.max_snapshot_workers: il valore predefinito è 3. Numero massimo di processi di lavoro usati durante la creazione iniziale dello snapshot. Aumentare questo valore per velocizzare la creazione dello snapshot iniziale quando si aumenta il numero di database con mirroring. Tuttavia, è consigliabile prendere in considerazione tutti gli altri processi in background in esecuzione nel sistema prima di eseguire questa operazione.

  • azure_cdc.change_batch_buffer_size: il valore predefinito è 16 MB. Dimensioni massime del buffer (in MB) per il batch di modifiche. La tabella mostra molti dati memorizzati nel buffer fino a questo prima di essere scritti nel disco locale. A seconda della frequenza di modifica dei dati nei database con mirroring, è possibile modificare questo valore per ridurre la frequenza batch di modifica o aumentarla se si vuole assegnare priorità alla velocità effettiva complessiva.

  • azure_cdc.change_batch_export_timeout: le impostazioni predefinite sono 30. Tempo di inattività massimo (in secondi) tra i messaggi batch di modifica. Quando viene superato questo valore, il batch corrente viene contrassegnato come completato. A seconda della frequenza di modifica dei dati nei database con mirroring, è possibile modificare questo valore per ridurre la frequenza batch di modifica o aumentarla se si vuole assegnare priorità alla velocità effettiva complessiva.

  • azure_cdc.parquet_compression: il valore predefinito è ZSTD. Questo parametro è solo per uso interno, quindi non è consigliabile modificarlo.

  • azure_cdc.snapshot_buffer_size: il valore predefinito è 1000. Dimensioni massime (in MB) del buffer dello snapshot iniziale. In base alla tabella, molti dati vengono memorizzati nel buffer fino a questo prima di essere inviati a Fabric. Tenere presente che azure_cdc.snapshot_buffer_size*azure_cdc.max_snapshot_workers è il buffer di memoria totale usato durante lo snapshot iniziale.

  • azure_cdc.snapshot_export_timeout: il valore predefinito è 180. Tempo massimo (in minuti) per esportare lo snapshot iniziale. Al termine, riavvieremo.

Monitorare

Monitorare il mirroring di Fabric nel server flessibile di Database di Azure per PostgreSQL è essenziale per garantire che il processo di mirroring funzioni in modo fluido ed efficiente. Monitorando lo stato dei database con mirroring, è possibile identificare eventuali problemi potenziali ed eseguire azioni correttive in base alle esigenze.

È possibile usare diverse tabelle e Funzioni Definite dall'Utente per monitorare le metriche principali del CDC nel server flessibile di Database di Azure per PostgreSQL e risolvere i problemi relativi al processo di mirroring verso Fabric.

Monitoraggio delle funzioni

La funzione di mirroring per il mirroring di Fabric in Database di Azure per PostgreSQL consente di replicare senza interruzioni i database PostgreSQL in Microsoft Fabric, abilitando scenari avanzati di analisi e integrazione dei dati.

  • azure_cdc.list_tracked_publications(): per ogni pubblicazione nel server flessibile di origine restituisce una stringa delimitata da virgole contenente le informazioni seguenti- publicationName (text) - includeData (bool) - includeChanges (bool) - active (bool) - baseSnapshotDone (bool) - generationId (int)

  • azure_cdc.publication_status('pub_name'): per ogni pubblicazione nell'origine, il server flessibile restituisce una stringa delimitata da virgole con le informazioni seguenti

    • <status, start_lsn, stop_lsn, flush_lsn>.
    • Lo stato è costituito da ["Nome dello slot", "Nome dell'origine", "Percorso di destinazione dei dati CDC", "Attivo", "Snapshot completato", "Percentuale di avanzamento", "ID di generazione", "ID batch completato", "ID batch caricato", "Ora di inizio CDC"]
  • azure_cdc.is_table_mirrorable('schema_name','table_name'):Dato schema e nome di tabella, restituisce se la tabella è mirrorable. Affinché una tabella possa essere rispecchiata, deve soddisfare le seguenti condizioni:

    • I nomi di colonna non contengono i caratteri seguenti: [ ;{}\n\t=()]
    • I tipi di colonna sono uno dei seguenti:
      • 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
    • La tabella non è una vista, una vista materializzata, una tabella esterna, una TOAST table o una tabella partizionata
    • La tabella ha una chiave primaria o un indice univoco, non nullo e non parziale

Tabelle di rilevamento

  • azure_cdc.tracked_publications: una riga per ogni database Mirrored esistente in Fabric. Eseguire una query in questa tabella per comprendere lo stato di ogni pubblicazione.
Nome colonna Tipo Postgres Spiegazione
publication_id oid OID della pubblicazione
percorso_di_destinazione text Percorso della zona di atterraggio in Fabric OneLake
destination_format azure_cdc.data_format Formato dei dati in Azure CDC
include_data bool Indica se includere i dati dello snapshot iniziale nella pubblicazione
include_changes bool Indica se includere le modifiche nella pubblicazione
active bool Indica se la pubblicazione è attiva
snapshot_done bool Indica se lo snapshot è stato completato
snapshot_progress smallint Progresso dello snapshot
snapshot_progress_percentage text Percentuale dello stato di avanzamento dello snapshot
generation_id int Identificatore di generazione
stream_start_lsn pg_lsn Numero di sequenza del log in cui è stato avviato il flusso di modifiche
stream_start_time timestamp Timestamp dell'ora di avvio del flusso di modifiche
stream_stop_lsn pg_lsn Numero di sequenza del log in cui il flusso di modifiche è stato arrestato
snapshot_size bigint Dimensioni totali dello snapshot (in byte)
total_time int Tempo totale (in secondi) impiegato per la pubblicazione
  • azure_cdc.tracked_batches: una riga per ogni batch di modifiche acquisito e spedito a Fabric OneLake. Eseguire una query su questa tabella per verificare quale batch è già stato acquisito e caricato in Fabric OneLake. Con la last_written_lsn colonna è possibile capire se una determinata transazione nel database di origine è già stata spedita a Fabric.
Nome Tipo Postgres Spiegazione
publication_id oid OID della pubblicazione
completed_batch_id bigint Numero di sequenza (a partire da 1) del batch. Univoco per pubblicazione
last_written_lsn pg_lsn LSN dell'ultima scrittura di questo batch
last_received_lsn pg_lsn Ultimo LSN ricevuto
server_lsn pg_lsn LSN del server corrente (al momento in cui l'acquisizione di questo batch è stata finalizzata)
is_batch_uploaded bool Indica se il batch viene caricato
is_batch_acknowledged bool Se abbiamo riconosciuto wal_sender per questi dati batch (last_written_lsn)
batch_start_time TIMESTAMPTZ Timestamp dell'avvio del batch
batch_completion_time TIMESTAMPTZ Timestamp del completamento del batch
batch_uploaded_time TIMESTAMPTZ Timestamp del caricamento batch
batch_acknowledged_time TIMESTAMPTZ Timestamp del batch quando l'LSN è stato confermato al server di pubblicazione
batch_size int Dimensione del batch (in byte)