Recuperare un flusso

Puoi recuperare un flusso di dati non riuscito definitivamente senza crearne uno nuovo. Puoi farlo specificando la posizione da cui Datastream tenta di riprendere la lettura delle modifiche dall'origine.

Panoramica del recupero dello stream

Un flusso in esecuzione può riscontrare alcuni errori irreversibili e cambiare il suo stato in FAILED_PERMANENTLY. Questi errori impediscono la prosecuzione del flusso e potrebbero causare la perdita di dati.

Puoi recuperare un flusso non riuscito definitivamente impostandolo in modo che ignori l'errore e continui a leggere gli eventi in corso anziché ricreare il flusso e eseguire il backfill dei dati storici. Per recuperare un flusso non riuscito definitivamente, reimposti la replica in modo da avviare la lettura 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 corrisponde a un file di log di ripetizione nel database e al numero di modifica del sistema (SCN) in questo file.
  • Per le origini MySQL, una posizione di replica è il file di log binario del database (binlog) e la posizione in questo file.
  • Per le origini PostgreSQL (incluso AlloyDB per PostgreSQL), una posizione di replica è il numero di sequenza di log (LSN) nello slot di replica. Durante il ripristino, il flusso inizia a leggere dal primo LSN nello slot di replica.

Recupera un flusso per un'origine MySQL o Oracle

Per recuperare un flusso per un'origine MySQL o Oracle, hai a disposizione le seguenti opzioni:

  • Riprova dalla posizione corrente (consigliato): seleziona questa opzione per tentare lo streaming dalla posizione corrente in cui l'ultimo flusso non è riuscito. Devi prima correggere il file di log o recuperarlo dal backup. Questa è l'opzione consigliata.

  • Ignora la posizione corrente e trasmetti il flusso dalla posizione disponibile successiva: se mancano uno o più file di log, seleziona questa opzione per saltare questi file e riprendere il flusso dalla prima posizione nel file successivo disponibile. Le modifiche ai file di log mancanti andranno perse, ma puoi recuperarle eseguendo un backfill.

  • Ignora la posizione corrente e trasmetti il flusso dalla posizione più recente: se mancano uno o più file di log, seleziona questa opzione per saltare questi file e riprendere il 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 del log persa o non la segue immediatamente. Puoi recuperare queste modifiche eseguendo un backfill.

Per recuperare un flusso non riuscito definitivamente per un'origine MySQL o Oracle, segui questi passaggi:

  1. Vai alla pagina Stream in Google Cloud.

    Vai alla pagina Stream

  2. Seleziona la casella di controllo a sinistra del flusso che vuoi recuperare.

  3. Fai clic su Recupera.

  4. Viene visualizzato 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, il flusso riprende dalla prima posizione nel file di log indicato.
    • Per un'origine Oracle: il numero di modifica del sistema (SCN) nel campo System Change Number (SCN) (Numero di modifica del sistema). Questo campo è obbligatorio.
  5. Fai clic su Applica.

  6. Quando il flusso viene recuperato, viene visualizzato un timestamp nella colonna Recuperato nella pagina Stream.

Recupera un flusso 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 dello slot utilizzato per il flusso non riuscito o diverso:

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 non riuscito definitivamente per un'origine PostgreSQL, segui questi passaggi:

  1. Vai alla pagina Stream in Google Cloud.

    Vai alla pagina Stream

  2. Seleziona la casella di controllo a sinistra del flusso che vuoi recuperare.

  3. Fai clic su Recupera.

  4. Viene visualizzato il riquadro Definisci un nuovo slot di replica.

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

  6. Fai clic su Applica.

  7. Quando il flusso viene recuperato, viene visualizzato un timestamp nella colonna Recuperato nella pagina Stream.

Puoi anche recuperare i flussi di dati non riusciti definitivamente dalla pagina Dettagli stream. A questo scopo, fai clic su Recupera stream quando visualizzi informazioni dettagliate sul tuo stream.

Usa 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 nelle repliche perché interrompono la continuità del binlog, ma puoi seguire questi passaggi per recuperare il flusso e assicurarti che i dati delle modifiche vengano acquisiti:

  1. Arresta tutte le scritture nell'istanza principale.
  2. 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 ulteriori informazioni, consulta l'articolo Monitorare uno stream.
  3. Esegui il failover sulla nuova istanza di database.
  4. Se necessario, aggiorna il profilo di connessione del flusso alla nuova istanza di database (ad esempio, potresti dover modificare il nome host o l'indirizzo IP del database). Per ulteriori informazioni, consulta Modificare i profili di connessione.
  5. Recupera il flusso da una posizione specifica sull'istanza di failover per garantire la continuità CDC.