Puoi recuperare uno stream non riuscito in modo permanente senza doverne creare uno nuovo. Puoi farlo specificando la posizione da cui Datastream tenta di riprendere la lettura delle modifiche dall'origine.
Panoramica del recupero del flusso
Uno stream in esecuzione può riscontrare alcuni errori irreversibili e cambiare il suo stato in
FAILED_PERMANENTLY
. Questi errori impediscono l'esecuzione continua dello stream e
potrebbero causare la perdita di dati.
Puoi recuperare un flusso con errori permanenti impostandolo in modo che ignori l'errore e continui a leggere gli eventi in corso anziché ricreare il flusso e riempire i dati storici. Per recuperare uno stream con errori permanenti, reimposta la replica in modo che inizi a leggere da una posizione di replica diversa. Ogni tipo di origine supportato ha la propria definizione di posizione di replica:
- Per le origini Oracle, una posizione di replica è un redo log nel database e il numero della modifica di sistema (SCN) in questo file.
- Per le origini MySQL, una posizione di replica è il file di log binario (binlog) del database e la posizione in questo file (per la replica basata su binlog) o un insieme di identificatori di transazione globali chiamato insieme GTID (per la replica basata su GTID, supportata solo nell'API Datastream).
- Per le origini SQL Server, una posizione di replica è il numero di sequenza di log (LSN) nei log delle transazioni o nelle tabelle delle modifiche.
- Per le origini PostgreSQL (incluso AlloyDB per PostgreSQL), una posizione di replica è il numero di sequenza del log (LSN) nello slot di replica. Durante il recupero, il flusso inizia a leggere dal primo LSN nello slot di replica.
- Per le origini MongoDB, una posizione di replica è un timestamp nel log delle operazioni (oplog) di MongoDB.
Recuperare uno stream per un'origine MySQL o Oracle
Per recuperare uno stream per un'origine MySQL (replica basata su binlog) o Oracle, hai a disposizione le seguenti opzioni:
Riprova dalla posizione corrente (consigliato): seleziona questa opzione per tentare di riprendere lo streaming dalla posizione corrente, in cui lo streaming non è riuscito l'ultima volta. Devi prima correggere il file di log o recuperarlo dal backup. È l'opzione consigliata.
Salta la posizione corrente e trasmetti il flusso dalla successiva posizione disponibile: se mancano uno o più file di log, seleziona questa opzione per ignorarli e riprendere la trasmissione del flusso dalla prima posizione nel file successivo disponibile. Le modifiche ai file di log mancanti andranno perse, ma puoi recuperarle eseguendo un backfill.
Salta la posizione corrente e trasmetti il flusso dalla posizione più recente: se mancano uno o più file di log, seleziona questa opzione per ignorarli e riprendere la trasmissione del flusso dalla posizione più recente nel file di log più aggiornato. Le modifiche ai file di log mancanti andranno perse, ma puoi recuperarle eseguendo un backfill.
Riprendi dalla posizione e dal file di flusso dei dati preferiti: seleziona questa opzione per riprendere il flusso da una posizione di log e un file di log specifici. Alcune modifiche potrebbero andare perse se la posizione del log specificata non si sovrappone alla posizione di log persa o non la segue immediatamente. Puoi recuperare queste modifiche eseguendo un backfill.
Per recuperare uno stream con errore permanente per un'origine MySQL o Oracle, segui i seguenti passaggi:
Vai alla pagina Stream in Google Cloud.
Fai clic su Recupera nella riga con il nome dello stream che vuoi recuperare.
Si apre il riquadro Scegli una strategia di recupero. Seleziona un'opzione. Se selezioni Riprendi dalla posizione e dal file di flusso dei dati preferiti, inserisci quanto segue:
- Per un'origine MySQL: il nome del file di log nel campo Nome file e la posizione del log nel campo Posizione. Se non specifichi la posizione, lo stream riprende dalla prima posizione nel file di log indicato.
- Per un'origine Oracle: il numero della modifica di sistema (SCN) nel campo Numero della modifica di sistema (SCN). Questo campo è obbligatorio.
Fai clic su Applica.
Quando lo stream viene recuperato, viene visualizzato un timestamp nella colonna Recuperato nella pagina Stream.
Recuperare uno stream per un'origine PostgreSQL
Per recuperare un flusso per un'origine PostgreSQL, devi fornire il nome dello slot di replica. Il server utilizza questo slot di replica per inviare eventi a Datastream. Il nome dello slot di replica può essere uguale a quello utilizzato per lo stream non riuscito o diverso:
- Se il nuovo slot di replica ha un nome diverso, fornisci il nuovo nome dello slot di replica a Datastream.
Se non fornisci un nome dello slot di replica, Datastream utilizza il nome dello slot di replica specificato nella configurazione dell'origine.
Per ulteriori informazioni sugli slot di replica, consulta Configurare un database PostgreSQL di origine.
Eventuali eventi di modifica all'origine che si sono verificati tra la perdita della posizione del log e il primo LSN nel nuovo slot di replica andranno persi. Puoi recuperare queste modifiche eseguendo un backfill.
Per recuperare un flusso con errore permanente per un'origine PostgreSQL:
Vai alla pagina Stream in Google Cloud.
Fai clic su Recupera nella riga con il nome dello stream che vuoi recuperare.
Si apre il riquadro Definisci un nuovo slot di replica.
Nel campo Nome slot di replica, fornisci il nome di un nuovo slot di replica da cui il flusso tenterà di eseguire il recupero. Se hai ricreato lo slot di replica utilizzando lo stesso nome o vuoi riutilizzare lo slot specificato durante la configurazione dell'origine, puoi lasciare vuoto questo campo.
Fai clic su Applica.
Quando lo stream viene recuperato, viene visualizzato un timestamp nella colonna Recuperato nella pagina Stream.
Puoi anche recuperare gli stream non riusciti in modo permanente dalla pagina Dettagli stream. A tal fine, fai clic su Recupera stream quando visualizzi le informazioni dettagliate sul tuo stream.
Recuperare uno stream per un'origine SQL Server
Per recuperare un flusso per un'origine SQL Server, hai a disposizione le seguenti opzioni:
Riprendi dalla prima posizione disponibile: seleziona questa opzione se il log è stato troncato o se mancano alcuni record nelle tabelle delle modifiche e vuoi riprendere dal primo evento disponibile. Gli eventi mancanti vengono persi, ma puoi recuperarli eseguendo un backfill.
Riprendi dal tuo numero di sequenza di log (LSN) preferito: seleziona questa opzione per riprendere lo stream da un LSN specifico nei log delle transazioni o nelle tabelle delle modifiche. Alcuni eventi potrebbero andare persi se l'LSN specificato non si sovrappone all'ultimo LSN che Datastream è riuscito a recuperare o non lo segue immediatamente. Puoi recuperare questi eventi eseguendo un backfill.
L'LSN nei log delle transazioni e nelle tabelle delle modifiche contiene 20 caratteri esadecimali, ma per i log delle transazioni è separato da un delimitatore. Ad esempio:
- LSN nei log delle transazioni:
0000123C:0000BA78:0004
- LSN nelle tabelle delle modifiche:
0000123C0000BA780004
- LSN nei log delle transazioni:
Per recuperare un flusso con errore permanente per un'origine SQL Server, segui questi passaggi:
Vai alla pagina Stream in Google Cloud.
Fai clic su Recupera nella riga con il nome dello stream che vuoi recuperare.
Si apre il riquadro Scegli una strategia di recupero. Seleziona un'opzione.
Fai clic su Applica.
Quando lo stream viene recuperato, viene visualizzato un timestamp nella colonna Recuperato nella pagina Stream.
Recuperare uno stream per un'origine MongoDB
Il recupero dello stream per le origini MongoDB è disponibile tramite l'API Datastream. Puoi recuperare uno stream MongoDB utilizzando le seguenti opzioni:
Posizione di inizio più recente: seleziona questa opzione se vuoi riprendere lo stream dal timestamp corrente nel log delle operazioni di MongoDB. Gli eventi mancanti vengono persi, ma puoi recuperarli eseguendo un backfill.
Posizione di inizio specifica: seleziona questa opzione per riprendere lo stream da un timestamp selezionato. Il timestamp utilizzato nella richiesta deve essere valido, ovvero non può essere precedente alla prima posizione disponibile nell'oplog di MongoDB e non può essere nel futuro.
Per informazioni su come creare una richiesta per recuperare un flusso MongoDB, consulta la documentazione di riferimento dell'API Datastream.
Per informazioni sul log delle operazioni di MongoDB, consulta la documentazione di MongoDB.
Utilizza il recupero del flusso per un'origine MySQL in uno scenario di failover manuale
Puoi eseguire un failover manuale e utilizzare il recupero dei flussi per evitare di ricreare i flussi da zero durante la manutenzione o l'errore dell'istanza principale. In genere, Datastream non supporta i failover alle repliche perché interrompono la continuità del binlog, ma puoi seguire questi passaggi per recuperare lo stream e assicurarti che i dati delle modifiche vengano acquisiti:
- Interrompi tutte le scritture nell'istanza principale.
- Assicurati che la metrica di aggiornamento dei dati sia impostata su 0. Ciò significa che Datastream ha acquisito tutte le modifiche e non ci sono nuovi eventi da leggere dall'origine. Per maggiori informazioni, vedi Monitorare uno stream.
- Esegui il failover sulla nuova istanza del database.
- Se necessario, aggiorna il profilo di connessione dello stream alla nuova istanza del database (ad esempio, potrebbe essere necessario modificare l'hostname o l'indirizzo IP del database). Per saperne di più, vedi Modificare i profili di connessione.
- Recupera il flusso da una posizione specifica sull'istanza di failover per garantire la continuità della CDC.
Passaggi successivi
- Per scoprire di più sugli stati dello stream, consulta Ciclo di vita dello stream.
- Per scoprire come visualizzare le informazioni sul tuo stream, consulta Visualizzare uno stream.
- Per scoprire come monitorare uno stream, consulta Monitorare uno stream.
- Per scoprire come gestire il backfill per un flusso, vedi Gestione del backfill per gli oggetti di un flusso.
- Per scoprire come eliminare uno stream esistente, consulta Eliminare uno stream.