Ripristino di emergenza gestito

Questo documento fornisce una panoramica del ripristino di emergenza gestito da BigQuery e di come implementarlo per dati e carichi di lavoro.

Panoramica

BigQuery supporta scenari di ripristino di emergenza in caso di interruzione totale di una regione. Il ripristino di emergenza di BigQuery si basa sulla replica dei set di dati tra regioni per gestire il failover dell'archiviazione. Dopo aver creato una replica del set di dati in una regione secondaria, puoi controllare il comportamento di failover per le risorse di calcolo e archiviazione al fine di 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 nella versione Enterprise Plus.

Il ripristino di emergenza gestito esegue un failover rigido quando viene avviato un failover. In un caso di failover a freddo, le repliche della prenotazione e del set di dati nella regione secondaria vengono immediatamente promosse a quelle principali, anche se quella precedente non è attiva, senza attendere la replica dei dati non replicati. Per questo motivo, può verificarsi la perdita di dati durante l'hard failover. Qualsiasi job che ha eseguito il commit dei dati nella regione di origine prima del valore della replica replication_time potrebbe dover essere eseguito nuovamente nella regione di destinazione dopo il failover.

Per abilitare il ripristino di emergenza, devi creare una prenotazione per la versione Enterprise Plus nella regione principale, ossia la regione in cui si trova il set di dati prima del failover. La capacità di calcolo in standby nella regione associata è inclusa nella prenotazione Enterprise Plus. Successivamente, collegherai un set di dati a questa prenotazione per abilitare il failover per il set di dati in questione. Puoi associare un set di dati a una prenotazione solo se viene eseguito il backfill del set di dati e se ha le stesse località principali e secondarie accoppiate della prenotazione. Dopo che un set di dati è collegato a una prenotazione di failover, solo le prenotazioni Enterprise Plus possono leggere o scrivere su questi set di dati e non puoi eseguire una promozione di replica tra regioni sul set di dati. Per ulteriori informazioni sulle prenotazioni, consulta Introduzione alla gestione dei carichi di lavoro.

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

Devi scegliere attivamente di eseguire il failover nell'ambito dei test o in risposta a un disastro reale. Non dovresti eseguire il failover più di una volta in un periodo 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 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 del set di dati.

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

Architettura gestita per il ripristino di emergenza.

Limitazioni

Al ripristino di emergenza di BigQuery si applicano le seguenti limitazioni:

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

  • Il supporto delle regioni si basa sui bucket a due regioni. Non puoi configurare le seguenti coppie di regioni:

    • us-central1 - us località multiple
    • us-west1 - us località multiple
    • eu-west1 - eu località multiple
    • eu-west4 - eu località multiple
  • La scalabilità automatica dopo un failover dipende dalla disponibilità della capacità di calcolo nella regione secondaria. Solo la base di prenotazione è disponibile nella regione secondaria.

  • La vista INFORMATION_SCHEMA.RESERVATIONS non include dettagli di failover.

  • Se hai più prenotazioni di failover nello stesso progetto di amministrazione, ma i cui set di dati collegati utilizzano località secondarie diverse, non utilizzare una prenotazione di failover con i set di dati collegati 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.

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 maggiori informazioni, consulta Replicare un set di dati.

Quota

Prima di configurare una prenotazione di failover devi avere la capacità di calcolo che hai scelto nella regione secondaria. Se non è disponibile quota nella regione secondaria, non puoi configurare la prenotazione. Per ulteriori informazioni, consulta Quote e limiti.

Prezzi

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

  • Capacità di calcolo: devi acquistare la versione Enterprise Plus.

  • Replica turbo: il ripristino di emergenza si basa sulla replica turbo durante la replica. L'addebito avviene in base ai byte fisici e ai GB replicati. Per ulteriori informazioni, consulta i prezzi di Cloud Storage.

  • Archiviazione: i byte di archiviazione nella regione secondaria vengono fatturati allo stesso prezzo dei byte di archiviazione nella regione principale. Per ulteriori informazioni, vedi Prezzi di archiviazione.

I clienti devono pagare per la capacità di calcolo solo nella regione principale. La capacità di calcolo secondaria (basata sulla base di prenotazione) è disponibile nella regione secondaria senza costi aggiuntivi. Gli slot inattivi non possono utilizzare la capacità di calcolo secondaria, a meno che la prenotazione non abbia avuto esito negativo.

Se devi eseguire letture inattive nella regione secondaria, puoi acquistare capacità di calcolo Enterprise Plus aggiuntiva nella regione secondaria.

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 il 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 Edition (Versione), seleziona la versione Enterprise Plus.

  6. Nell'elenco del selettore Dimensioni massime della prenotazione, seleziona la dimensione massima della prenotazione.

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

    Il numero di slot di scalabilità automatica disponibili è determinato sottraendo il valore Slot di riferimento dal valore Dimensione massima prenotazione. Ad esempio, se crei una prenotazione con 100 slot di base e una dimensione massima della prenotazione di 400, la prenotazione ha 300 slot con scalabilità automatica. Per maggiori informazioni sugli slot di riferimento, consulta Utilizzo delle prenotazioni con slot di riferimento e con scalabilità automatica.

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

  9. Per disattivare la condivisione degli slot inattivi e utilizzare solo la capacità degli 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 contemporaneità dei job di destinazione, fai clic sull'opzione Esegui l'override della contemporaneità automatica dei job di destinazione su On, quindi inserisci un valore per Contemporaneità target dei job. 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 slot.

SQL

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

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

    Vai a BigQuery

  2. Nell'Editor query, inserisci la seguente istruzione:

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

    Sostituisci quanto segue:

    • ADMIN_PROJECT_ID: l'ID del progetto di amministrazione a cui appartiene la risorsa di prenotazione.
    • LOCATION: la località della prenotazione. Se selezioni una località di BigQuery Omni, la tua 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_SLOTS: il numero di slot da allocare alla prenotazione. L'impegno deve contenere un numero sufficiente di slot non allocati. Non puoi impostare le opzioni slot_capacity e edition nella stessa prenotazione.
    • SECONDARY_LOCATION: la località secondaria della prenotazione. In caso di interruzione, tutti i set di dati associati a questa prenotazione non verranno trasferiti a questa località.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le 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 località secondaria in 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 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 a cui appartiene la risorsa di prenotazione.
    • LOCATION: la località 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, tutti i set di dati associati a questa prenotazione non verranno trasferiti a questa località.

  3. Fai clic su Esegui.

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

Collega un set di dati a una prenotazione

Per abilitare il 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 primarie e secondarie della prenotazione. Per maggiori informazioni, consulta Replica del 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 slot.

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

  4. Fai clic sulla scheda Ripristino di emergenza.

  5. Fai clic su Aggiungi set di dati associato.

  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 query, inserisci la seguente istruzione:

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

    Sostituisci quanto segue:

    • DATASET_NAME: il nome del set di dati.

    • 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 le query, consulta Eseguire una query interattiva.

Avvia un failover

In caso di interruzione a livello di regione, devi eseguire manualmente il failover della prenotazione alla località utilizzata dalla replica. Il failover 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 Ripristino di emergenza.

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

  4. Fai clic su Failover.

SQL

Per aggiungere o modificare una località secondaria in 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 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 a cui appartiene la risorsa di prenotazione.
    • LOCATION: la località 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 dichiara se la prenotazione è la replica principale.

  3. Fai clic su Esegui.

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

Monitoraggio

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

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

La seguente query restituisce i job degli ultimi sette giorni che non sarebbero riusciti se i relativi set di dati fossero quelli 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 del set di dati.
  • LOCATION: la località.

Passaggi successivi