Questa pagina descrive come attivare l'isolamento delle transazioni negli snapshot dei database Microsoft SQL Server e MySQL nei job di replica di Cloud Data Fusion.
Quando configuri un job di replica per un database, il job acquisisce un'immagine iniziale delle tabelle di origine. Per garantire la coerenza dei dati, applica i blocchi a queste tabelle.
Dopo lo snapshot iniziale, le modifiche incrementali all'origine vengono acquisite e applicate al target BigQuery nell'ambito del processo di replica in corso.
SQL Server
Per acquisire le modifiche nelle tabelle di origine di un database SQL Server, il job di replica utilizza un connettore Debezium. Durante la fase
snapshotting
,
Debezium acquisisce i blocchi in base al valore configurato
snapshot.isolation.mode
.
La seguente tabella mette a confronto le modalità di isolamento supportate per i job di replica.
Modalità di isolamento | Serrature acquisite | Coerenza dei dati |
---|---|---|
read_uncommitted |
Nessuno | No. |
read_committed |
Blocchi condivisi su un batch di righe alla volta | Parziale. Un record aggiunto può essere visualizzato due volte: una volta nello snapshot iniziale e una volta nella fase di streaming. |
repeatable_read (valore predefinito) |
Blocchi condivisi su tutte le righe | Parziale. Un record aggiunto può essere visualizzato due volte: una volta nello snapshot iniziale e una volta nella fase di streaming. |
snapshot |
Nessuno | Completo. |
exclusive |
Blocco esclusivo su tutte le tabelle | Completo. |
Per ulteriori informazioni sulle modalità di isolamento, consulta Impostare il livello di isolamento delle transazioni.
Per impostazione predefinita, la modalità di isolamento degli snapshot è repeatable_read
. Questa modalità acquisisce i blocchi condivisi su tutti i dati letti durante la fase di creazione degli snapshot. Impedire ad altre transazioni di modificare le righe esistenti e può potenzialmente consentire l'inserimento di nuovi record (vedi Escalation dei blocchi).
La replica con isolamento snapshot è consigliata se è già attivata sul database di origine perché garantisce la consistenza completa dei dati senza bloccare le tabelle. Se non è abilitato, scopri di più sull'impatto dei livelli di isolamento basati sul controllo delle versioni delle righe nel motore del database SQL Server prima di attivarlo.
In alternativa, utilizza la modalità di isolamento read_committed
, che non blocca le tabelle durante la fase di creazione degli snapshot.
Attivare l'isolamento degli snapshot in un job di replica
Attiva l'isolamento degli snapshot nel database SQL Server:
ALTER DATABASE DATABASE_NAME SET ALLOW_SNAPSHOT_ISOLATION ON
Sostituisci
DATABASE_NAME
con il nome del database SQL Server.Imposta l'argomento di runtime
snapshot.isolation.mode
susnapshot
. Per ulteriori informazioni, consulta Passare un argomento di runtime a un job di replica.
MySQL
Per acquisire le modifiche nelle tabelle di origine di un database MySQL, il job di replica utilizza un connettore Debezium. Durante la fase
snapshotting
,
Debezium acquisisce i blocchi in base al valore configurato
snapshot.locking.mode
.
Per impostazione predefinita, la modalità di blocco delle istantanee è minimal
. In questa modalità, il connettore detiene il blocco di lettura globale per la parte iniziale dello snapshot mentre legge gli schemi di database e altri metadati. Il connettore recupera quindi tutte le righe tramite una lettura coerente, utilizzando la transazione REPEATABLE READ
, che non blocca le tabelle.
Per evitare blocchi, imposta la modalità su none
.
In alternativa, per evitare blocchi sui database MySQL in esecuzione su Cloud SQL, esegui la replica dalla replica anziché dal database transazionale.
Modificare il comportamento di blocco durante lo snapshot per MySQL
- Per modificare il comportamento di blocco degli snapshot nel database MySQL, imposta l'argomento di runtime, la proprietà
snapshot.locking.mode
, su un valore appropriato della modalità di blocco.
Per ulteriori informazioni, consulta Passare un argomento Debezium a un job di replica.
Limitazioni
- La replica in Cloud Data Fusion supporta la versione 1.3 di Debezium Connector.
Origini Oracle in Cloud Data Fusion
La replica dalle origini Oracle in Cloud Data Fusion è basata su Datastream. Datastream non blocca le tabelle.
Passaggi successivi
- Scopri di più sulla replica.