Replica del set di dati tra regioni
Con la replica del set di dati BigQuery, puoi configurare la replica automatica di un set di dati tra due regioni diverse o più regioni.
Panoramica
Quando crei un set di dati in BigQuery, selezioni una o più regioni in cui sono archiviati i dati. Una regione è una raccolta di data center all'interno di un'area geografica, mentre una più regioni è una grande area geografica che contiene due o più regioni geografiche. I dati sono archiviati in una delle regioni contenute.
BigQuery archivia sempre copie dei dati in due diverse zone Google Cloud all'interno della posizione del set di dati. Una zona è un'area di deployment per le risorse Google Cloud all'interno di una regione. In tutte le regioni la replica tra zone usa la doppia scrittura sincrona. La selezione di una località multiregionale non fornisce la replica tra regioni o la ridondanza a livello di regione, quindi non vi è alcun aumento della disponibilità del set di dati in caso di interruzione del servizio a livello di regione. I dati sono archiviati in una singola regione all'interno della posizione geografica.
Per ulteriore ridondanza geografica, puoi replicare qualsiasi set di dati. BigQuery crea una replica secondaria del set di dati, che si trova in un'altra regione da te specificata. Questa replica viene quindi replicata in modo asincrono tra due zone con l'altra regione, per un totale di quattro copie a livello di zona.
Replica del set di dati
Se replichi un set di dati, BigQuery archivia i dati nell'area geografica specificata.
Regione principale. Quando crei un set di dati, BigQuery posiziona il set di dati nella regione principale.
Regione secondaria. Quando aggiungi una replica del set di dati, BigQuery la posiziona nella regione secondaria.
Inizialmente, la replica nella regione principale è la replica principale e la replica nella regione secondaria è la replica secondaria.
La replica principale è scrivibile e la replica secondaria è di sola lettura. Le scritture nella replica principale vengono replicate in modo asincrono nella replica secondaria. All'interno di ogni regione, i dati sono archiviati in modo ridondante in due zone. Il traffico di rete non esce mai dalla rete Google Cloud.
Il seguente diagramma mostra la replica che si verifica quando viene replicato un set di dati:
Se la regione principale è online, puoi passare manualmente alla replica secondaria. Per ulteriori informazioni, consulta Promuovere la replica secondaria.
Prezzi
Ti viene addebitato quanto segue per i set di dati replicati:
- Spazio di archiviazione. I byte di archiviazione nella regione secondaria vengono fatturati come copia separata nella regione secondaria. Consulta Prezzi di archiviazione di BigQuery.
- Replica dei dati. Per ulteriori informazioni sulle modalità di fatturazione per la replica dei dati, consulta Prezzi della replica dei dati.
Capacità di calcolo nella regione secondaria
Per eseguire job e query sulla replica nella regione secondaria, devi acquistare slot all'interno della regione secondaria o eseguire una query on demand.
Puoi utilizzare gli slot per eseguire query di sola lettura dalla replica secondaria. Se promuovi la replica secondaria a principale, puoi utilizzare questi slot anche per scrivere nella replica.
Puoi acquistare lo stesso numero di slot che hai nella regione principale o un numero diverso di slot. Se acquisti meno slot, questo potrebbe influire sulle prestazioni delle query.
Considerazioni sulla località
Prima di aggiungere la replica di un set di dati, devi creare il set di dati iniziale da replicare in BigQuery se non esiste già. La località della replica aggiunta è impostata su quella specificata al momento dell'aggiunta della replica. La località della replica aggiunta deve essere diversa da quella del set di dati iniziale. Ciò significa che i dati del set di dati vengono replicati continuamente tra la località in cui è stato creato il set di dati e la località della replica. Per le repliche che richiedono la colocation, ad esempio viste, viste materializzate o tabelle esterne non BigLake, l'aggiunta di una replica in una località diversa da quella dei dati di origine o non compatibile con la località potrebbe causare errori nel job.
Quando i clienti replicano un set di dati in più regioni, BigQuery garantisce che i dati si trovino solo nelle località in cui sono state create le repliche.
Requisiti di colocation
L'uso della replica del set di dati dipende dai seguenti requisiti di colocation.
Cloud Storage
L'esecuzione di query sui dati su Cloud Storage richiede che il bucket Cloud Storage venga allocato con la replica. Utilizza le considerazioni sulla posizione delle tabelle esterne per decidere dove posizionare la replica.
Limitazioni
La replica del set di dati BigQuery è soggetta alle seguenti limitazioni:
- I dati nei flussi di cui non è stato eseguito il commit non vengono replicati nella replica secondaria se la tabella viene scritta con l'API BigQuery StorageWrite. La replica dei dati in modalità flusso dall'API BigQuery StorageWrite o da
tabledata.insertAll
è il criterio del "best effort" e potrebbe registrare un ritardo di replica elevato. - L'API BigQuery Storage Read non supporta la lettura dalle tabelle contenute nella replica del set di dati secondario. Per leggere da una tabella contenuta nella replica secondaria, la replica secondaria deve essere prima promossa a replica principale.
- Le tabelle inserite tramite Datastream in BigQuery tramite Change Data Capture non sono supportate.
- La replica e il cambio sono gestiti tramite istruzioni DDL (Data Definition Language) SQL.
- Esiste un limite di una replica di ogni set di dati per ogni regione o più regioni. Non puoi creare due repliche secondarie dello stesso set di dati nella stessa regione di destinazione.
- Le risorse all'interno delle repliche sono soggette alle limitazioni descritte in Comportamento delle risorse.
- I tag di criterio e i criteri dei dati associati non vengono replicati nella replica secondaria. Le query che fanno riferimento a colonne con tag di criteri in regioni diverse dalla regione originale non hanno esito positivo, anche se la replica viene promossa.
- Viaggio cronologico è disponibile nella replica secondaria solo al termine della creazione della replica secondaria.
- Puoi replicare solo un set di dati con meno di 100.000 tabelle.
- Esiste un limite massimo di 4 repliche aggiunte (poi eliminate) alla stessa regione per set di dati al giorno.
- La larghezza di banda di replica per l'operazione di copia iniziale è limitata a 1 GB fisico al secondo per progetto per coppia di continenti. La replica a questa velocità non è garantita.
- Le tabelle con chiavi di crittografia gestite dal cliente (CMEK) applicate non possono essere sottoposte a query nella regione secondaria se il valore
replica_kms_key
non è configurato. - Le tabelle BigLake non sono supportate.
- Non puoi configurare le seguenti coppie di regioni se stai configurando la replica dei dati per il ripristino di emergenza:
us-central1
-us
(più regioni)us-west1
-us
(più regioni)eu-west1
-eu
(più regioni)eu-west4
-eu
(più regioni)
Comportamento delle risorse
Le seguenti operazioni non sono supportate sulle risorse all'interno della replica secondaria:
Se devi creare una copia di una risorsa in una replica secondaria, devi copiare o eseguire una query sulla risorsa, quindi materializzare i risultati all'esterno della replica secondaria. Ad esempio, usa CREATE TABLE AS SELECT per creare una nuova risorsa dalla risorsa di replica secondaria.
Le repliche primarie e secondarie sono soggette alle seguenti differenze:
Replica principale della regione 1 | Replica secondaria della regione 2 | Note |
---|---|---|
Tabella BigLake | Tabella BigLake | Non supportati. |
Tabella esterna | Tabella esterna | Viene replicata solo la definizione della tabella esterna. La query ha esito negativo quando il bucket Cloud Storage non è collocato nella stessa località di una replica. |
Vista logica | Vista logica | Le visualizzazioni logiche che fanno riferimento a un set di dati o a una risorsa che non si trova nella stessa località della vista logica hanno esito negativo quando viene eseguita la query. |
Tabella gestita | Tabella gestita | Nessuna differenza. |
Vista materializzata | Vista materializzata | Se una tabella di riferimento non si trova nella stessa regione della vista materializzata, la query non riesce. Le viste materializzate replicate potrebbero presentare un livello di inattività superiore al valore max di inattività della vista. |
Modello | Modello | Archiviati come tabelle gestite. |
Funzione remota | Funzione remota | Le connessioni sono a livello di regione. Le funzioni remote che fanno riferimento a un set di dati o a una risorsa (connessione) che non si trova nella stessa località della funzione remota non riescono quando vengono eseguite. |
Routine | Funzione definita dall'utente o stored procedure | Le routine che fanno riferimento a un set di dati o a una risorsa che non si trova nella stessa località della routine non riescono quando vengono eseguite. Qualsiasi routine che fa riferimento a una connessione, ad esempio le funzioni remote, non funziona al di fuori della regione di origine. |
Criterio di accesso alle righe | Criterio di accesso alle righe | Nessuna differenza. |
Cerca indice | Cerca indice | Non replicato. |
Stored procedure | Stored procedure | Le stored procedure che fanno riferimento a un set di dati o a una risorsa che non si trova nella stessa località della stored procedure hanno esito negativo quando vengono eseguite. |
Clone da tavola | Tabella gestita | Fatturazione come copia diretta nella replica secondaria. |
Snapshot tabella | Snapshot tabella | Fatturazione come copia diretta nella replica secondaria. |
Funzione con valore di tabella (TVF) | Fascia d'età | Gli TVF che fanno riferimento a un set di dati o a una risorsa che non si trovano nella stessa località dell'unità TVF hanno esito negativo durante l'esecuzione. |
Funzioni definite dall'utente | Funzioni definite dall'utente | Le funzioni definite dall'utente che fanno riferimento a un set di dati o a una risorsa che non si trovano nella stessa località non riescono quando vengono eseguite. |
Scenari di interruzione del servizio
La replica tra regioni non è concepita per essere usata come piano di ripristino di emergenza durante un'interruzione totale tra regioni. In caso di interruzione totale della regione nella regione della replica principale, non puoi promuovere la replica secondaria. Poiché le repliche secondarie sono di sola lettura, non puoi eseguire job di scrittura sulla replica secondaria né promuovere la regione secondaria finché non viene ripristinata la regione della replica principale. Per saperne di più sulla preparazione per il ripristino di emergenza, consulta Ripristino di emergenza gestito.
La tabella seguente spiega l'impatto delle interruzioni totali nell'area geografica sui dati replicati:
Regione 1 | Regione 2 | Regione interruzione | Impatto |
---|---|---|---|
Replica principale | Replica secondaria | Regione 2 | I job di sola lettura in esecuzione nella regione 2 sulla replica secondaria non riescono. |
Replica principale | Replica secondaria | Regione 1 | Tutti i job in esecuzione nella regione 1 non riescono. I job di sola lettura continuano a essere eseguiti nella regione 2 in cui si trova la replica secondaria. I contenuti della regione 2 sono inattivi fino a quando non viene sincronizzata con la regione 1. |
Usa replica del set di dati
Questa sezione descrive come replicare un set di dati, promuovere la replica secondaria ed eseguire job di lettura di BigQuery nella regione secondaria.
Autorizzazioni obbligatorie
Per ottenere le autorizzazioni necessarie per gestire le repliche, chiedi all'amministratore di concederti l'autorizzazione bigquery.datasets.update
.
Replica un set di dati
Per replicare un set di dati, utilizza
l'istruzione DDL ALTER SCHEMA ADD REPLICA
.
Puoi aggiungere una replica a qualsiasi set di dati che si trova in una o più regioni non ancora replicata in quella regione o in più regioni. Dopo aver aggiunto una replica, il completamento dell'operazione di copia iniziale richiede del tempo. Puoi comunque eseguire query che fanno riferimento alla replica principale mentre i dati vengono replicati, senza ridurre la capacità di elaborazione delle query. Non puoi replicare i dati all'interno delle geolocalizzazioni all'interno di più regioni.
L'esempio seguente crea un set di dati denominato my_dataset
nell'area geografica us-central1
, quindi aggiunge una replica nella regione us-east4
:
-- Create the primary replica in the us-central1 region. CREATE SCHEMA my_dataset OPTIONS(location='us-central1'); -- Create a replica in the secondary region. ALTER SCHEMA my_dataset ADD REPLICA `my_replica` OPTIONS(location='us-east4');
Per verificare l'avvenuta creazione della replica secondaria, puoi eseguire una query sulla colonna creation_complete
nella visualizzazione INFORMATION_SCHEMA.SCHEMATA_REPLICAS
.
Promuovi la replica secondaria
Se la regione principale è online, puoi promuovere la replica secondaria. La promozione imposta la replica secondaria come principale scrivibile. Questa operazione viene completata entro pochi secondi se la replica secondaria raggiunge la replica principale. Se la replica secondaria non viene aggiornata, la promozione non può essere completata fino a quando non viene raggiunta. La replica secondaria non può essere promuovera come principale se la regione contenente la principale ha un'interruzione.
Tieni presente quanto segue:
- Tutte le scritture nelle tabelle restituiscono errori durante l'elaborazione della promozione. La replica principale precedente diventa non scrivibile immediatamente all'inizio della promozione.
- Le tabelle che non sono completamente replicate al momento dell'inizio della promozione restituiscono letture inattive.
Per promuovere una replica come replica principale, utilizza l'istruzione DDL ALTER SCHEMA SET
OPTIONS
e imposta l'opzione primary_replica
.
Tieni presente quanto segue: - Devi impostare esplicitamente la località del job sulla regione secondaria nelle impostazioni della query. Consulta Specifica delle località in BigQuery.
L'esempio seguente promuove la replica us-east4
come principale:
ALTER SCHEMA my_dataset SET OPTIONS(primary_replica = 'us-east4')
Per verificare che la promozione della replica secondaria sia andata a buon fine, puoi eseguire una query sulla colonna replica_primary_assignment_complete
nella visualizzazione INFORMATION_SCHEMA.SCHEMATA_REPLICAS
.
Rimuovi una replica del set di dati
Per rimuovere una replica e interrompere la replica del set di dati, utilizza l'istruzione DDL ALTER SCHEMA DROP REPLICA
.
L'esempio seguente rimuove la replica us
:
ALTER SCHEMA my_dataset DROP REPLICA IF EXISTS `us`;
Devi prima rilasciare eventuali repliche secondarie per eliminare l'intero set di dati. Se
elimini l'intero set di dati, ad esempio utilizzando l'istruzione DROP
SCHEMA
, senza
eliminare tutte le repliche secondarie, riceverai un errore.
Elenca repliche del set di dati
Per elencare le repliche del set di dati in un progetto, esegui una query sulla visualizzazione INFORMATION_SCHEMA.SCHEMATA_REPLICAS
.
Esegui la migrazione dei set di dati
Puoi utilizzare la replica dei set di dati tra regioni per eseguire la migrazione dei set di dati da una regione all'altra. L'esempio seguente mostra il processo di migrazione del set di dati my_migration
esistente da US
a più regioni EU
utilizzando la replica tra regioni.
Replica il set di dati
Per iniziare il processo di migrazione, replica prima il set di dati nella regione in cui vuoi eseguire la migrazione dei dati. In questo scenario, eseguirai la migrazione del set di dati my_migration
all'area multiregionale EU
.
-- Create a replica in the secondary region. ALTER SCHEMA my_migration ADD REPLICA `eu` OPTIONS(location='eu');
Questa operazione crea una replica secondaria denominata eu
nell'area multiregionale EU
.
La replica principale è il set di dati my_migration
nell'area multiregionale US
.
Promuovi la replica secondaria
Per continuare a eseguire la migrazione del set di dati nella località multiregionale EU
, promuovi la replica secondaria:
ALTER SCHEMA my_migration SET OPTIONS(primary_replica = 'eu')
Al termine della promozione, eu
sarà la replica principale. È una replica scrivibile.
Completare la migrazione
Per completare la migrazione dall'area multiregionale US
a quella multiregionale EU
, elimina la replica us
. Questo passaggio non è obbligatorio, ma è utile se non hai bisogno di una replica del set di dati oltre alle tue esigenze di migrazione.
ALTER SCHEMA my_migration DROP REPLICA IF EXISTS us;
Il set di dati si trova nell'area multiregionale EU
e non esistono repliche del set di dati my_migration
. Hai eseguito correttamente la migrazione del set di dati nell'area multiregionale EU
. L'elenco completo delle risorse di cui viene eseguita la migrazione è disponibile in Comportamento delle risorse.
Chiavi di crittografia gestite dal cliente (CMEK)
Le chiavi Cloud Key Management Service gestite dal cliente non vengono replicate automaticamente quando crei una replica secondaria. Per mantenere la crittografia sul set di dati replicato, devi impostare replica_kms_key
per la località della replica aggiunta. Puoi impostare replica_kms_key
utilizzando l'istruzione DDL ALTER SCHEMA ADD REPLICA
.
La replica dei set di dati con CMEK si comporta come descritto nei seguenti scenari:
Se il set di dati di origine ha un valore
default_kms_key
, devi fornire un valorereplica_kms_key
creato nella regione del set di dati di replica quando utilizzi l'istruzione DDLALTER SCHEMA ADD REPLICA
.Se nel set di dati di origine non è impostato un valore per
default_kms_key
, non puoi impostarereplica_kms_key
.Se utilizzi la rotazione delle chiavi Cloud KMS (o entrambe) su
default_kms_key
oreplica_kms_key
, è comunque possibile eseguire query sul set di dati replicato dopo la rotazione della chiave.- La rotazione delle chiavi nella regione principale aggiorna la versione della chiave solo nelle tabelle create dopo la rotazione. Per le tabelle esistenti prima della rotazione della chiave viene comunque utilizzata la versione della chiave impostata prima della rotazione.
- La rotazione della chiave nella regione secondaria aggiorna tutte le tabelle nella replica secondaria alla nuova versione della chiave.
- Il passaggio della replica principale alla replica secondaria aggiorna tutte le tabelle nella replica secondaria (in precedenza replica principale) alla nuova versione della chiave.
- Se viene eliminata la versione della chiave impostata nelle tabelle nella replica primaria prima della rotazione della chiave, non sarà possibile eseguire query sulle tabelle che utilizzano ancora la versione della chiave impostata prima della rotazione della chiave finché non viene aggiornata la versione della chiave. Per aggiornare la versione della chiave, la versione precedente della chiave deve essere attiva (non disabilitata o eliminata).
Se nel set di dati di origine non è impostato un valore per
default_kms_key
, ma nel set di dati di origine sono presenti singole tabelle con CMEK applicata, non è possibile eseguire query su queste tabelle nel set di dati replicato. Per eseguire query sulle tabelle, segui questi passaggi:- Aggiungi un valore
default_kms_key
per il set di dati di origine. - Quando crei una nuova replica utilizzando l'istruzione DDL
ALTER SCHEMA ADD REPLICA
, imposta un valore per l'opzionereplica_kms_key
. È possibile eseguire query sulle tabelle CMEK nella regione di destinazione.
Tutte le tabelle CMEK nella regione di destinazione utilizzano lo stesso
replica_kms_key
, indipendentemente dalla chiave utilizzata nella regione di origine.- Aggiungi un valore
Crea una replica con CMEK
L'esempio seguente crea una replica nella regione us-west1
con un
valore replica_kms_key
impostato. Per la chiave CMEK, concedi l'autorizzazione per l'account di servizio BigQuery per criptare e decriptare.
-- Create a replica in the secondary region. ALTER SCHEMA my_dataset ADD REPLICA `us-west1` OPTIONS(location='us-west1', replica_kms_key='my_us_west1_kms_key_name');
Limitazioni CMEK
La replica dei set di dati con CMEK applicata è soggetta alle seguenti limitazioni:
Non puoi aggiornare la chiave Cloud KMS replicata dopo aver creato la replica.
Non puoi aggiornare il valore
default_kms_key
sul set di dati di origine dopo aver creato le repliche del set di dati.Se il valore
replica_kms_key
fornito non è valido nella regione di destinazione, il set di dati non verrà replicato.Le tabelle criptate con CMEK replicate nella regione di destinazione sono visibili, ma non possono essere sottoposte a query o scritte perché la CMEK di origine non è riconosciuta nella regione di destinazione.
Passaggi successivi
- Scopri come utilizzare le prenotazioni BigQuery.
- Scopri di più sulle funzionalità di affidabilità di BigQuery.