Ripristino di emergenza gestito

Questo documento fornisce una panoramica del piano di recupero di BigQuery gestito e su come implementarlo per i tuoi dati e carichi di lavoro.

Panoramica

BigQuery supporta scenari di ripristino di emergenza in caso di interruzione totale della regione. Il ripristino di emergenza di BigQuery si basa sulla replica dei set di dati tra regioni per gestire il failover dello spazio di archiviazione. Dopo aver creato una replica di un set di dati in una regione secondaria, puoi controllare il comportamento di failover per l'elaborazione e l'archiviazione per mantenere la continuità aziendale durante un'interruzione. Dopo un failover, puoi accedere alla capacità di calcolo (slot) e ai set di dati replicati nella regione promossa. Il ripristino di emergenza è supportato solo con la versione Enterprise Plus.

Il ripristino di emergenza gestito esegue un hard failover quando viene avviato un failover. In un hard failover, le repliche della prenotazione e del set di dati nella regione secondaria vengono promosse immediatamente alla regione principale, anche se la regione principale precedente è inattiva, senza attendere la replica dei dati non replicati. Per questo motivo, durante il failover forzato può verificarsi una perdita di dati. Potrebbe essere necessario rieseguire nella regione di destinazione tutti i job che hanno eseguito il commit dei dati nella regione di origine prima del valore replication_time della replica dopo il failover.

Per attivare ripristino di emergenza, devi creare una prenotazione della versione Enterprise Plus nella regione principale, ovvero la regione in cui si trova il set di dati prima del failover. La capacità di calcolo in standby nella regione accoppiata è inclusa nella prenotazione di Enterprise Plus. Poi, colleghi un set di dati a questa prenotazione per attivare il failover per quel set di dati. Puoi collegare un set di dati a una prenotazione solo se il set di dati è sottoposto a backfill e ha le stesse località principali e secondarie accoppiate della prenotazione. Dopo che un set di dati è stato collegato a una prenotazione di failover, solo le prenotazioni Enterprise Plus possono scrivere in questi set di dati e non puoi eseguire una promozione di replica tra regioni sul set di dati. Puoi leggere i set di dati associati a una prenotazione di failover con qualsiasi modello di capacità. Per ulteriori informazioni sulle prenotazioni, consulta Introduzione alla gestione dei carichi di lavoro.

La capacità di calcolo della regione principale è disponibile nella regione secondaria subito dopo un failover. Questa disponibilità si applica al valore di base della prenotazione, indipendentemente dal fatto che venga utilizzato o meno.

Devi scegliere attivamente il failover nell'ambito dei test o in risposta a un reale disastro. Non dovresti eseguire il failover più di una volta in un intervallo di 10 minuti. Negli scenari di replica dei dati, il backfill si riferisce al processo di compilazione di una replica di un set di dati con i dati storici esistenti prima della creazione o dell'attivazione della replica. I set di dati devono completare il backfill prima che tu possa eseguire il failover al set di dati.

Il seguente diagramma mostra l'architettura del ripristino di emergenza gestito:

Architettura di ripristino di emergenza gestita.

Limitazioni

Le seguenti limitazioni si applicano al ripristino di emergenza di BigQuery:

  • Il ripristino di emergenza di BigQuery è soggetto alle stesse limitazioni della replica dei set di dati tra regioni.

  • La scalabilità automatica dopo un failover dipende dalla disponibilità della capacità di calcolo nella regione secondaria. Nella regione secondaria è disponibile solo la linea di base della prenotazione.

  • La visualizzazione INFORMATION_SCHEMA.RESERVATIONS non contiene dettagli sul failover.

  • Se hai più prenotazioni di failover con lo stesso progetto di amministrazione, ma i set di dati allegati utilizzano posizioni secondarie diverse, non utilizzare una prenotazione di failover con i set di dati allegati a una prenotazione di failover diversa.

  • Se vuoi convertire le prenotazioni esistenti in una prenotazione di failover, le prenotazioni esistenti non possono avere più di 1000 assegnazioni.

Località

Quando crei una prenotazione per il failover, sono disponibili le seguenti regioni:

Codice posizione Nome regione Descrizione regione
ASIA
ASIA-EAST1 Taiwan
ASIA-SOUTHEAST1 Singapore
AU
AUSTRALIA-SOUTHEAST1 Sydney
AUSTRALIA-SOUTHEAST2 Melbourne
CA
NORTHAMERICA-NORTHEAST1 Montréal
NORTHAMERICA-NORTHEAST2 Toronto
EU
EU Multiregione UE
EUROPE-CENTRAL2 Varsavia
EUROPE-NORTH1 Finlandia
EUROPE-SOUTHWEST1 Madrid
EUROPE-WEST1 Belgio
EUROPE-WEST3 Francoforte
EUROPE-WEST4 Paesi Bassi
EUROPE-WEST8 Milano
EUROPE-WEST9 Parigi
IN
ASIA-SOUTH1 Mumbai
ASIA-SOUTH2 Delhi
US
US Multiregione Stati Uniti
US-CENTRAL1 Iowa
US-EAST1 Carolina del Sud
US-EAST4 Virginia del Nord
US-SOUTH1 Dallas
US-WEST1 Oregon
US-WEST2 Los Angeles
US-WEST3 Salt Lake City
US-WEST4 Las Vegas

Le coppie di regioni devono essere selezionate tra ASIA, AU, CA, EU, IN o US. Ad esempio, una regione all'interno di US non può essere accoppiata a una regione all'interno di EU.

Se il tuo set di dati BigQuery si trova in una località multiregionale, non puoi utilizzare le seguenti coppie di regioni. Questa limitazione garantisce che la prenotazione per il failover e i dati siano separati geograficamente dopo la replica. Per saperne di più sulle regioni contenute nelle regioni multiple, consulta Regioni multiple.

  • us-central1 - us multiregione
  • us-west1 - us multiregione
  • eu-west1 - eu multiregione
  • eu-west4 - eu multiregione

Prima di iniziare

  1. Assicurati di disporre dell'autorizzazione bigquery.reservations.update Identity and Access Management (IAM) per aggiornare le prenotazioni.
  2. Assicurati di disporre di set di dati esistenti configurati per la replica. Per ulteriori informazioni, consulta Replicare un set di dati.

Replica turbo

La replica di ripristino di emergenza utilizza la modalità Turbo per una replica più rapida dei dati tra le regioni, che riduce il rischio di perdita di dati e aiuta a supportare un servizio ininterrotto in seguito a un'interruzione a livello di regione.

La replica turbo non si applica all'operazione di backfill iniziale. Al termine dell'operazione di backfill iniziale, la replica turbo è progettata per replicare i set di dati in una singola coppia di regioni di failover con una replica secondaria entro 60 minuti, a condizione che la quota di larghezza di banda non venga superata e non si verifichino errori utente.

Quota

Devi disporre della capacità di calcolo scelta nella regione secondaria prima di configurare una prenotazione per il failover. Se non è disponibile quota nella regione secondaria, non puoi configurare la prenotazione. Per ulteriori informazioni, consulta Quote e limiti.

La larghezza di banda della replica turbo ha una quota. Per ulteriori informazioni, consulta Quote e limiti.

Prezzi

La configurazione del ripristino di emergenza gestito richiede i seguenti piani tariffari:

I clienti devono pagare solo per la capacità di calcolo nella regione principale. La capacità di calcolo secondaria (in base alla linea di base della prenotazione) è disponibile nella regione secondaria senza costi aggiuntivi. Gli slot inattivi non possono utilizzare la capacità di calcolo secondaria se la prenotazione non è andata a buon fine.

Se devi eseguire letture non aggiornate nella regione secondaria, devi acquistare capacità di calcolo aggiuntiva.

Creare o modificare una prenotazione Enterprise Plus

Prima di collegare un set di dati a una prenotazione, devi creare una prenotazione Enterprise Plus o modificare una prenotazione esistente e configurarla per ripristino di emergenza.

Crea una prenotazione

Seleziona una delle seguenti opzioni:

Console

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

    Vai a BigQuery

  2. Nel menu di navigazione, fai clic su Gestione della capacità e poi su Crea prenotazione.

  3. Nel campo Nome prenotazione, inserisci un nome per la prenotazione.

  4. Nell'elenco Località, seleziona la località.

  5. Nell'elenco Versione, seleziona la versione Enterprise Plus.

  6. Nell'elenco Selettore dimensione massima prenotazione, seleziona la dimensione massima della prenotazione.

  7. (Facoltativo) Nel campo Slot di base, inserisci il numero di slot di base per la prenotazione.

    Il numero di slot con scalabilità automatica disponibili viene determinato sottraendo il valore Slot di riferimento dal valore Dimensione massima della prenotazione. Ad esempio, se crei una prenotazione con 100 slot di riferimento e una dimensione massima della prenotazione di 400, la prenotazione avrà 300 slot con scalabilità automatica. Per saperne di più sugli slot di riferimento, consulta Utilizzare le prenotazioni con gli slot di riferimento e con la scalabilità automatica.

  8. Nell'elenco Località secondaria, seleziona la località secondaria.

  9. Per disattivare la condivisione degli slot inattivi e utilizzare solo la capacità dello slot specificata, fai clic sul pulsante di attivazione/disattivazione Ignora gli slot inattivi.

  10. Per espandere la sezione Impostazioni avanzate, fai clic sulla freccia di espansione .

  11. (Facoltativo) Per impostare la concorrenza dei job target, attiva l'opzione Ignora la concorrenza automatica target dei job e inserisci un valore per Concorrenza dei job target. La suddivisione degli slot viene visualizzata nella tabella Stima dei costi. Un riepilogo della prenotazione viene visualizzato nella tabella Riepilogo della capacità.

  12. Fai clic su Salva.

La nuova prenotazione è visibile nella scheda Prenotazioni di slot.

SQL

Per creare una prenotazione, utilizza l'istruzione DDL (Data Definition Language) CREATE RESERVATION.

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

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    CREATE RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    OPTIONS (
      slot_capacity = NUMBER_OF_BASELINE_SLOTS,
      edition = ENTERPRISE_PLUS,
      secondary_location = SECONDARY_LOCATION);

    Sostituisci quanto segue:

    • ADMIN_PROJECT_ID: l'ID del progetto di amministrazione proprietario della risorsa di prenotazione.
    • LOCATION: la posizione della prenotazione. Se selezioni una posizione BigQuery Omni, l'opzione di versione è limitata alla versione Enterprise.
    • RESERVATION_NAME: il nome della prenotazione.

      Il nome deve iniziare e terminare con una lettera minuscola o un numero e contenere solo lettere minuscole, numeri e trattini.

    • NUMBER_OF_BASELINE_SLOTS: il numero di slot di riferimento da allocare alla prenotazione. Non puoi impostare l'opzione slot_capacity e l'opzione edition nella stessa prenotazione.
    • SECONDARY_LOCATION: la località secondaria della prenotazione. In caso di interruzione del servizio, tutti i set di dati collegati a questa prenotazione verranno sottoposti a failover in questa posizione.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire query, consulta Eseguire una query interattiva.

Modificare una prenotazione esistente

Seleziona una delle seguenti opzioni:

Console

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

    Vai a BigQuery

  2. Nel pannello di navigazione, vai alla sezione Gestione della capacità.

  3. Fai clic sulla scheda Prenotazioni slot.

  4. Trova la prenotazione che vuoi aggiornare.

  5. Espandi l'opzione Azioni.

  6. Fai clic su Modifica.

  7. Nel campo Località secondaria, inserisci la località secondaria.

  8. Fai clic su Salva.

SQL

Per aggiungere o modificare una sede secondaria a una prenotazione, utilizza l'istruzione DDL ALTER RESERVATION SET OPTIONS.

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

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    ALTER RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    SET OPTIONS (
      secondary_location = SECONDARY_LOCATION);

    Sostituisci quanto segue:

    • ADMIN_PROJECT_ID: l'ID del progetto di amministrazione proprietario della risorsa di prenotazione.
    • LOCATION: la posizione della prenotazione, ad esempio europe-west9.
    • RESERVATION_NAME: il nome della prenotazione. Il nome deve iniziare e terminare con una lettera minuscola o un numero e contenere solo lettere minuscole, numeri e trattini.

    • SECONDARY_LOCATION: la località secondaria della prenotazione. In caso di interruzione del servizio, tutti i set di dati collegati a questa prenotazione verranno sottoposti a failover in questa posizione.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire query, consulta Eseguire una query interattiva.

Allega un set di dati a una prenotazione

Per attivare ripristino di emergenza per la prenotazione creata in precedenza, completa i seguenti passaggi. Il set di dati deve essere già configurato per la replica nelle stesse regioni principali e secondarie della prenotazione. Per ulteriori informazioni, consulta Replica dei set di dati tra regioni.

Console

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

    Vai a BigQuery

  2. Nel menu di navigazione, fai clic su Gestione della capacità, quindi sulla scheda Prenotazioni di slot.

  3. Fai clic sulla prenotazione a cui vuoi allegare un set di dati.

  4. Fai clic sulla scheda Disaster recovery.

  5. Fai clic su Aggiungi set di dati di failover.

  6. Inserisci il nome del set di dati da associare alla prenotazione.

  7. Fai clic su Aggiungi.

SQL

Per collegare un set di dati a una prenotazione, utilizza l'istruzione DDL ALTER SCHEMA SET OPTIONS.

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

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    ALTER SCHEMA
      `DATASET_NAME`
    SET OPTIONS (
      failover_reservation = ADMIN_PROJECT_ID.RESERVATION_NAME);

    Sostituisci quanto segue:

    • DATASET_NAME: il nome del set di dati.

    • ADMIN_PROJECT_ID.RESERVATION_NAME: il nome della prenotazione a cui vuoi associare il set di dati.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire query, consulta Eseguire una query interattiva.

Scollegare un set di dati da una prenotazione

Per interrompere la gestione del comportamento di failover di un set di dati tramite una prenotazione, scollega il set di dati dalla prenotazione. La replica principale corrente del set di dati non viene modificata né vengono rimosse le repliche del set di dati esistenti. Per ulteriori informazioni sulla rimozione delle repliche del set di dati dopo il disaccoppiamento di un set di dati, vedi Rimuovere la replica del set di dati.

Console

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

    Vai a BigQuery

  2. Nel menu di navigazione, fai clic su Gestione della capacità, quindi sulla scheda Prenotazioni di slot.

  3. Fai clic sulla prenotazione da cui vuoi scollegare un set di dati.

  4. Fai clic sulla scheda Disaster recovery.

  5. Espandi l'opzione Azioni per la replica principale del set di dati.

  6. Fai clic su Rimuovi.

SQL

Per scollegare un set di dati da una prenotazione, utilizza l'istruzione DDL ALTER SCHEMA SET OPTIONS.

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

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    ALTER SCHEMA
      `DATASET_NAME`
    SET OPTIONS (
      failover_reservation = NULL);

    Sostituisci quanto segue:

    • DATASET_NAME: il nome del set di dati.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire query, consulta Eseguire una query interattiva.

Avvia un failover

In caso di interruzione del servizio a livello di regione, devi eseguire manualmente il failover della prenotazione alla località utilizzata dalla replica. Il trasferimento della prenotazione include anche eventuali set di dati associati. Per eseguire manualmente il failover di una prenotazione:

Console

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

    Vai a BigQuery

  2. Nel menu di navigazione, fai clic su Disaster recovery.

  3. Fai clic sul nome della prenotazione a cui vuoi eseguire il failover.

  4. Fai clic su Failover.

SQL

Per aggiungere o modificare una località secondaria a una prenotazione, utilizza l'istruzione DDL ALTER RESERVATION SET OPTIONS e imposta is_primary su TRUE.

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

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    ALTER RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    SET OPTIONS (
      is_primary = TRUE);

    Sostituisci quanto segue:

    • ADMIN_PROJECT_ID: l'ID del progetto di amministrazione proprietario della risorsa di prenotazione.
    • LOCATION: la posizione della prenotazione, ad esempio europe-west9.
    • RESERVATION_NAME: il nome della prenotazione. Il nome deve iniziare e terminare con una lettera minuscola o un numero e contenere solo lettere minuscole, numeri e trattini.

    • PRIMARY_STATUS: uno stato booleano che indica se la prenotazione è la replica principale.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire query, consulta Eseguire una query interattiva.

Monitoraggio

Per determinare lo stato delle repliche, esegui una query sulla visualizzazione INFORMATION_SCHEMA.SCHEMATA_REPLICAS. Ad esempio:

SELECT
  schema_name,
  replica_name,
  creation_complete,
  replica_primary_assigned,
  replica_primary_assignment_complete
FROM
  `region-LOCATION`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
WHERE
  schema_name="my_dataset"

La seguente query restituisce i job degli ultimi sette giorni che non andrebbero a buon fine se i relativi set di dati fossero set di dati di failover:

WITH
  non_epe_reservations AS (
    SELECT project_id, reservation_name
    FROM `PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS
    WHERE edition != 'ENTERPRISE_PLUS'
  )
SELECT *
FROM
  (
    SELECT job_id
    FROM
      (
        SELECT
          job_id,
          reservation_id,
          ARRAY_CONCAT(referenced_tables, [destination_table]) AS all_referenced_tables,
          query
        FROM
          `PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.JOBS
        WHERE
          creation_time
          BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
          AND CURRENT_TIMESTAMP()
      ) A,
      UNNEST(all_referenced_tables) AS referenced_table
  ) jobs
LEFT OUTER JOIN non_epe_reservations
  ON (
    jobs.reservation_id = CONCAT(
      non_epe_reservations.project_id, ':', 'LOCATION', '.', non_epe_reservations.reservation_name))
WHERE
  CONCAT(jobs.project_id, ':', jobs.dataset_id)
  IN UNNEST(
    [
      'PROJECT_ID:DATASET_ID',
      'PROJECT_ID:DATASET_ID']);

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto.
  • DATASET_ID: l'ID set di dati.
  • LOCATION: la posizione.

Passaggi successivi