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 sincronizzare di nuovo tutti i dati dal database di origine a BigQuery.
Prima di iniziare
Prima di iniziare a eseguire la migrazione dei dati in un'altra regione, tieni presente quanto segue:
- La migrazione richiede tempo e devi mettere temporaneamente in pausa lo stream durante l'operazione. Per mantenere l'integrità dei dati, il database di origine deve conservare
dei log delle modifiche quando il flusso è in pausa. Per stimare il tempo di messa in pausa dello stream,
combina il valore di
max_staleness
nel set di dati e l'operazione di unione più lunga:- Per informazioni su quanto tempo potrebbe essere necessario prima che le operazioni di unione
alla fine, consulta la sezione Valore
max_staleness
consigliato della tabella. - Per trovare il valore massimo di
max_staleness
nel set di dati, consulta Determinare il valoremax_staleness
corrente di una tabella e modifica la query in base alle tue esigenze specifiche. - Se la pausa stimata è troppo lunga per essere supportata dal database di origine,
potrebbe essere consigliabile ridurre temporaneamente il valore di
max_staleness
per le tabelle del set di dati.
- Per informazioni su quanto tempo potrebbe essere necessario prima che le operazioni di unione
alla fine, consulta la sezione Valore
- 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 ulteriori informazioni sulle prenotazioni, consulta Assegnazioni delle 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 di BigQuery:
Nella console Google Cloud, vai alla pagina BigQuery Studio.
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 set di dati. Ad esempio,
region-us
.
Monitora l'avanzamento della migrazione e attendi fino alla filigrana di copia nel la replica si trova entro pochi minuti dall'istanza principale. Puoi eseguire questa query su INFORMATION_SCHEMA di BigQuery per controllare 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 dell'inattività di nella replica del set di dati che hai creato.
- NEW_REGION: la regione in cui hai creato il set di dati.
Metti in pausa lo stream Datastream esistente. Per ulteriori informazioni, consulta la sezione su come mettere in pausa lo stream.
Attendi il completamento dello stream e prendi nota dell'ora in cui lo stream è entrato nello stato
PAUSED
.Verifica che le ultime modifiche CDC siano state applicate alla tabella BigQuery controllando
upsert_stream_apply_watermark
per la tabella. Esegui questa query e assicurati che il timestamp della filigrana 10 minuti dopo, 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 il valore
upsert_stream_apply_watermark
.
Utilizza la query del passaggio 3 per verificare che la filigrana della copia della nuova regione sia successiva a
upsert_stream_apply_watermark
acquisita nel passaggio 6.Se vuoi, confronta manualmente diverse tabelle del set di dati principale nella regione originale con la replica nella nuova regione per verificare che tutti i dati siano copiati correttamente.
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.
Facoltativamente, se non hai più bisogno del set di dati originale (ora la replica) e non vuoi costi aggiuntivi, vai a BigQuery Studio e inserisci 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.
Crea un nuovo flusso con la stessa identica configurazione ma con la nuova versione di BigQuery località di destinazione.
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 è stato letto correttamente. Per informazioni su come iniziare Trasmettere in live streaming da una posizione specifica, consulta Gestire gli stream.
- Per le origini PostgreSQL: il nuovo flusso inizia a leggere le modifiche dal primo il 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 cursore dello slot di replica sull'ultimo LSN da cui è stato letto Datastream. Puoi trovare questo LSN nei log del consumer di Datastream.
Se vuoi, puoi eliminare lo stream originale.