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

Questa pagina descrive le best practice per un caso d'uso in cui hai configurato la replica di Datastream in BigQuery, ma hai configurato il set di dati di destinazione in una regione errata. Poi, vuoi spostare il set di dati in un'altra regione (o in più regioni) senza dover risincronizzare tutti i dati dal database di origine a BigQuery.

Prima di iniziare

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

  • La migrazione richiede tempo e devi mettere temporaneamente in pausa il flusso durante l'operazione. Per mantenere l'integrità dei dati, il database di origine deve conservare i log delle modifiche quando il flusso viene messo in pausa. Per stimare per quanto tempo mettere in pausa il flusso, 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 delle query e prenotazione in background). Per maggiori informazioni sulle prenotazioni, consulta Assegnazioni di prenotazione.
  • 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 console Google Cloud, 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 da creare.
    • NEW_REGION: il nome della regione in cui vuoi creare il set di dati. Ad esempio, region-us.
  3. Monitora l'avanzamento della migrazione e attendi fino a quando la filigrana di copia nella replica non si trova entro pochi minuti da quella principale. Puoi eseguire questa query su BigQuery INFORMATION_SCHEMA per verificare l'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 progetto Google Cloud.
    • 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 il flusso Datastream esistente. Per maggiori informazioni, consulta Mettere in pausa lo stream.

  5. Attendi lo svuotamento del flusso e prendi nota di quando il flusso è passato allo stato PAUSED.

  6. Conferma che le ultime modifiche CDC siano state applicate alla tabella BigQuery selezionando upsert_stream_apply_watermark per la tabella. Esegui la query seguente e assicurati che il timestamp della filigrana sia successivo a 10 minuti e poi a quando lo stream è stato messo in pausa:

    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 la quale vuoi controllare upsert_stream_apply_watermark.
  7. Utilizza la query del passaggio 3 per verificare che la nuova filigrana di copia della regione sia successiva al valore upsert_stream_apply_watermark acquisito nel passaggio 6.

  8. Facoltativamente, 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 questo 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. Facoltativamente, se non hai più bisogno del set di dati originale (ora la replica) e non vuoi comportare addebiti aggiuntivi, vai a BigQuery Studio e trascina 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 flusso con la stessa configurazione, ma con la nuova località di destinazione BigQuery.

  12. Avvia il nuovo stream.

    Per impedire la replica di eventi duplicati, avvia il flusso da una posizione specifica:

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