Eseguire la migrazione di una tabella CDC in un'altra regione

Puoi spostare un set di dati di destinazione Datastream in un'altra regione o multiregione BigQuery utilizzando la replica dei set di dati tra regioni. Questo flusso di lavoro aggiorna la località di un set di dati Change Data Capture (CDC) attivo riducendo al minimo i tempi di inattività dello stream ed evitando un backfill storico completo dal database di origine.

Durante la migrazione, l'esecuzione di query sulla regione secondaria potrebbe restituire risultati incompleti o imprecisi. Per ulteriori informazioni sulle limitazioni della migrazione, vedi Replica dei set di dati tra regioni.

Prima di iniziare

Prima di iniziare la migrazione dei dati in un'altra regione, tieni presente quanto segue:

  • La migrazione richiede tempo e devi mettere in pausa temporaneamente lo stream durante l'operazione. Per mantenere l'integrità dei dati, il database di origine deve conservare i log delle modifiche quando lo stream è in pausa. Per stimare la durata della pausa dello stream, combina il valore di max_staleness nel set di dati e l'operazione di unione più lunga:
  • Verifica che l'utente che esegue la migrazione disponga di risorse BigQuery sufficienti nella regione di destinazione (prenotazione di query e prenotazione in background). Per ulteriori informazioni sulle prenotazioni, vedi Assegnazioni di prenotazioni.
  • Verifica che l'utente che esegue la migrazione disponga delle autorizzazioni sufficienti per eseguire questa operazione, ad esempio i controlli di Identity and Access Management (IAM) o i Controlli di servizio VPC.

Passi per la migrazione

Per avviare la migrazione del set di dati, utilizza la replica dei dati BigQuery:

  1. Nella Google Cloud console, vai alla pagina BigQuery Studio.

    Vai a BigQuery Studio

  2. Crea una replica del set di dati BigQuery nella nuova regione:

    ALTER SCHEMA DATASET_NAME
    ADD REPLICA 'NEW_REGION'
    OPTIONS(location='NEW_REGION');
    

    Sostituisci quanto segue:

    • DATASET_NAME: il nome del set di dati che vuoi creare.
    • NEW_REGION: il nome della regione in cui vuoi creare il tuo set di dati. Ad esempio, region-us.
  3. Monitora lo stato di avanzamento della migrazione e attendi che la filigrana di copia nella replica sia a pochi minuti dalla filigrana principale. Puoi eseguire questa query su INFORMATION_SCHEMA di BigQuery per controllare lo stato di avanzamento della migrazione:

    SELECT
    catalog_name as project_id,
    schema_name as dataset_name,
    replication_time as dataset_replica_staleness
    FROM
    'NEW_REGION'.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
    WHERE
    catalog_name = PROJECT_ID
    AND schema_name = DATASET_NAME
    AND location = NEW_REGION;
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • DATASET_NAME: il nome del set di dati.
    • DATASET_REPLICA_STALENESS: la configurazione di obsolescenza delle tabelle nella replica del set di dati che hai creato.
    • NEW_REGION: la regione in cui hai creato il set di dati.
  4. Metti in pausa lo stream Datastream esistente. Per ulteriori informazioni, vedi Mettere in pausa lo stream.

  5. Attendi che lo stream venga svuotato e prendi nota dell'ora in cui è passato allo stato PAUSED.

  6. Verifica che le modifiche CDC più recenti siano state applicate alla tabella BigQuery controllando upsert_stream_apply_watermark per la tabella. Esegui la query seguente e assicurati che il timestamp della filigrana sia 10 minuti dopo la messa in pausa dello stream:

    SELECT table_name, upsert_stream_apply_watermark
    FROM DATASET_NAME.INFORMATION_SCHEMA.TABLES
    

    Per eseguire la query solo per una tabella specifica, aggiungi la seguente clausola WHERE:

    WHERE table_name = 'TABLE_NAME'
    

    Sostituisci quanto segue:

    • DATASET_NAME: il nome del set di dati.
    • TABLE_NAME: facoltativo. La tabella per cui vuoi controllare upsert_stream_apply_watermark.
  7. Utilizza la query del passaggio 3 per verificare che la filigrana di copia della nuova regione sia successiva a upsert_stream_apply_watermark acquisita nel passaggio 6.

  8. (Facoltativo) Confronta manualmente diverse tabelle nel set di dati principale nella regione originale con la replica nella nuova regione per verificare che tutti i dati siano stati copiati correttamente.

  9. Promuovi la replica del set di dati BigQuery eseguendo il seguente comando in BigQuery Studio:

    ALTER SCHEMA DATASET_NAME
    SET OPTIONS(primary_replica = 'NEW_REGION');
    

    Sostituisci quanto segue:

    • DATASET_NAME: il nome del set di dati.
    • NEW_REGION: la regione in cui hai creato il set di dati.
  10. (Facoltativo) Se non hai più bisogno del set di dati originale (ora la replica) e non vuoi sostenere costi aggiuntivi, vai a BigQuery Studio ed elimina il set di dati BigQuery originale:

    ALTER SCHEMA DATASET_NAME DROP REPLICA IF EXISTS ORIGINAL_REGION;
    

    Sostituisci quanto segue:

    • DATASET_NAME: il nome del set di dati originale.
    • ORIGINAL_REGION: la regione del set di dati originale.
  11. Crea un nuovo stream con la stessa configurazione, ma con la nuova località di destinazione BigQuery.

  12. Avvia il nuovo stream.

    Per evitare di replicare eventi duplicati, avvia lo stream da una posizione specifica:

    • Per le origini MySQL e Oracle: puoi identificare la posizione del log esaminando i log dello stream originale e trovando l'ultima posizione da cui lo stream ha letto correttamente. Per informazioni su come avviare lo stream da una posizione specifica, vedi Gestire gli stream.
    • Per le origini PostgreSQL: il nuovo stream inizia a leggere le modifiche dal primo numero di sequenza di log (LSN) nello slot di replica. Poiché lo stream originale potrebbe aver già elaborato alcune di queste modifiche, modifica manualmente il puntatore dello slot di replica all'ultimo LSN da cui Datastream ha letto. Puoi trovare questo LSN nei log dei consumer Datastream.
  13. (Facoltativo) Elimina lo stream originale.