Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
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.
Selezionare Inizia per avviare il flusso di lavoro di abilitazione.
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
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
- I nomi di colonna non contengono i caratteri seguenti:
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) |