Ripristino di emergenza gestito

Questo documento fornisce una panoramica sul ripristino di emergenza gestito di BigQuery e su 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 del set di dati tra regioni per gestire il failover dello spazio di archiviazione. Dopo aver creato la replica di un set di dati in una regione secondaria, puoi controllare il comportamento del failover per il computing e l'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 con la versione Enterprise Plus.

All'avvio del failover, il ripristino di emergenza gestito esegue un failover completo. In un failover completo, le repliche della prenotazione e del set di dati nella regione secondaria vengono immediatamente promosse alla regione principale, anche se la regione principale precedente non è attiva, senza attendere la replica dei dati non replicati. Per questo motivo, durante il failover completo potrebbe verificarsi una perdita di dati. È possibile che tutti i job per i quali è stato eseguito il commit dei dati nella regione di origine prima del valore replication_time della replica debbano essere eseguiti 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, ovvero quella 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. Poi collegherai un set di dati a questa prenotazione per abilitare il failover per il set di dati. Puoi associare un set di dati a una prenotazione solo se il set di dati viene sottoposto a backfill e ha le stesse località primarie e secondarie associate 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 subito dopo un failover nella regione secondaria. Questa disponibilità si applica alla base di 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'emergenza 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 completamento 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 del failover al 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 per le regioni si basa su bucket a due regioni. Non puoi configurare le seguenti coppie di regioni:

    • us-central1 - us (più regioni)
    • us-west1 - us (più regioni)
    • eu-west1 - eu (più regioni)
    • eu-west4 - eu (più regioni)
  • La scalabilità automatica dopo un failover dipende dalla disponibilità di capacità di calcolo nella regione secondaria. Nella regione secondaria è disponibile solo la base di riferimento della prenotazione.

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

  • Se disponi di più prenotazioni di failover con lo stesso progetto di amministrazione, ma i cui set di dati collegati utilizzano località secondarie diverse, non utilizzare un'unica 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 che i set di dati esistenti siano configurati per la replica. Per ulteriori informazioni, consulta Replicare un set di dati.

Quota

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

Prezzi

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

  • 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 fisici replicati. Per ulteriori informazioni, consulta i prezzi di Cloud Storage.

  • Spazio di archiviazione: i byte di archiviazione nella regione secondaria vengono fatturati allo stesso prezzo dei byte di archiviazione nella regione principale. Per ulteriori informazioni, consulta i prezzi dello spazio di archiviazione.

I clienti devono pagare solo per la capacità di calcolo nella regione principale. La capacità di calcolo secondaria (in base alla base di riferimento della prenotazione) è disponibile nella regione secondaria senza costi aggiuntivi. Gli slot inattivi non possono utilizzare la capacità di calcolo secondaria, a meno che non si verifichi il failover della prenotazione.

Se devi eseguire letture inattive nella regione secondaria, puoi acquistare ulteriore capacità di calcolo Enterprise Plus 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à, quindi su Crea prenotazione.

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

  4. Seleziona la località nell'elenco Località.

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

  6. Nell'elenco Selettore Dimensione massima 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 con 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 riferimento e una dimensione massima della prenotazione di 400, la prenotazione avrà 300 slot con scalabilità automatica. Per ulteriori informazioni sugli slot di riferimento, consulta Utilizzo delle prenotazioni con slot di riferimento e con scalabilità automatica.

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

  9. Per disabilitare 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à di destinazione dei job, fai clic sul pulsante di attivazione/disattivazione Ignora la contemporaneità target automatica dei job, quindi inserisci un valore in 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 l'istruzione DDL (Data Definition Language) di CREATE RESERVATION.

  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 proprietario della risorsa di prenotazione.
    • LOCATION: la località della prenotazione. Se selezioni una località BigQuery Omni, l'opzione relativa alla 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 l'opzione slot_capacity e l'opzione edition nella stessa prenotazione.
    • SECONDARY_LOCATION: la località secondaria della prenotazione. In caso di interruzione, tutti i set di dati associati a questa prenotazione eseguiranno il failover in questa località.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, vedi 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 da 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 proprietario della 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 eseguiranno il failover in questa località.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, vedi 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 saperne di più, 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, vedi Eseguire una query interattiva.

Avvia un failover

In caso di interruzione del servizio a livello di regione, devi eseguire manualmente il failover della prenotazione nella località utilizzata dalla replica. Il failover della prenotazione includerà anche tutti i 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 per 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 proprietario della 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, vedi 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 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 del set di dati.
  • LOCATION: la località.

Passaggi successivi