Verwaltete Notfallwiederherstellung

Dieses Dokument bietet einen Überblick über die von BigQuery verwaltete Notfallwiederherstellung und deren Implementierung für Ihre Daten und Arbeitslasten.

Überblick

BigQuery unterstützt Szenarien der Notfallwiederherstellung im Falle eines Gesamtausfalls der Region. Die BigQuery-Notfallwiederherstellung basiert auf der regionenübergreifenden Dataset-Replikation, um den Speicher-Failover zu verwalten. Nachdem Sie ein Dataset-Replikat in einer sekundären Region erstellt haben, können Sie das Failover-Verhalten für Computing und Speicher steuern, um die Geschäftskontinuität während eines Ausfalls aufrechtzuerhalten. Nach einem Failover können Sie auf Rechenkapazität (Slots) und replizierte Datasets in der hochgestuften Region zugreifen. Die Notfallwiederherstellung wird nur in Enterprise Plus unterstützt.

Die verwaltete Notfallwiederherstellung führt zu einem harten Failover, wenn ein Failover ausgelöst wird. Bei einem harten Failover werden die Reservierungs- und Dataset-Replikate in der sekundären Region sofort zum primären Knoten hochgestuft, auch wenn die vorherige primäre Region ausgefallen ist. Sie müssen dabei nicht auf die Replikation nicht replizierter Daten warten. Aus diesem Grund kann es bei einem harten Failover zu Datenverlusten kommen. Alle Jobs, für die ein Commit für Daten in der Quellregion vor dem Wert von replication_time des Replikats durchgeführt wurde, müssen nach dem Failover in der Zielregion evtl. noch einmal ausgeführt werden.

Zur Aktivierung der Notfallwiederherstellung müssen Sie eine Enterprise Plus-Reservierung in der primären Region erstellen. Das ist die Region, in der sich das Dataset vor dem Failover befindet. Die Standby-Rechenkapazität in der gekoppelten Region ist in der Enterprise Plus-Reservierung enthalten. Anschließend hängen Sie ein Dataset an diese Reservierung an, um den Failover für dieses Dataset zu aktivieren. Sie können ein Dataset nur dann an eine Reservierung anhängen, wenn ein Backfill für das Dataset durchgeführt wurde und es dieselben gekoppelten primären und sekundären Standorte wie die Reservierung hat. Nachdem ein Dataset an eine Failover-Reservierung angehängt wurde, können nur Enterprise Plus-Reservierungen diese Datasets lesen oder schreiben und Sie können keine regionenübergreifende Replikationshochstufung für das Dataset durchführen. Weitere Informationen zu Reservierungen finden Sie unter Einführung in die Arbeitslastverwaltung.

Die Rechenkapazität Ihrer primären Region ist in der sekundären Region unmittelbar nach einem Failover verfügbar. Diese Verfügbarkeit gilt für Ihre Reservierungsreferenz, unabhängig davon, ob sie verwendet wird oder nicht.

Sie müssen das Failover aktiv im Rahmen von Tests oder als Reaktion auf einen echten Notfall auswählen. Sie sollten in einem 10-Minuten-Fenster nicht mehr als einmal Failover ausführen. In Szenarien der Datenreplikation bezieht sich Backfill auf den Vorgang, bei dem ein Replikat eines Datasets mit Verlaufsdaten gefüllt wird, die vor dem Erstellen oder Aktivieren des Replikats vorhanden waren. Datasets müssen ihren Backfill abschließen, bevor ein Failover auf das Dataset möglich ist.

Das folgende Diagramm zeigt die Architektur der verwalteten Notfallwiederherstellung:

Architektur der verwalteten Notfallwiederherstellung.

Beschränkungen

Für die BigQuery-Notfallwiederherstellung gelten die folgenden Einschränkungen:

  • Die BigQuery-Notfallwiederherstellung unterliegt den gleichen Einschränkungen wie die regionenübergreifende Dataset-Replikation.

  • Die Regionsunterstützung basiert auf Buckets mit zwei Regionen. Die folgenden Regionspaare können nicht konfiguriert werden:

    • Multiregion us-central1 - us
    • Multiregion us-west1 - us
    • Multiregion eu-west1 - eu
    • Multiregion eu-west4 - eu
  • Das Autoscaling nach einem Failover hängt von der Verfügbarkeit der Rechenkapazität in der sekundären Region ab. In der sekundären Region ist nur die Reservierungsreferenz verfügbar.

  • Die INFORMATION_SCHEMA.RESERVATIONS-Ansicht enthält keine Failover-Details.

  • Wenn Sie mehrere Failover-Reservierungen mit demselben Administrationsprojekt haben, deren angehängte Datasets jedoch unterschiedliche sekundäre Standorte verwenden, sollten Sie keine Failover-Reservierung mit den Datasets verwenden, die an eine andere Failover-Reservierung angehängt sind.

  • Wenn Sie vorhandene Reservierungen in eine Failover-Reservierung umwandeln möchten, dürfen die vorhandenen Reservierungen nicht mehr als 1.000 Zuweisungen haben.

Hinweise

  1. Sie benötigen die IAM-Berechtigung (Identity and Access Management) bigquery.reservations.update, um Reservierungen zu aktualisieren.
  2. Prüfen Sie, ob bereits Datasets für die Replikation konfiguriert sind. Weitere Informationen finden Sie unter Dataset replizieren.

Kontingent

Sie müssen die ausgewählte Rechenkapazität in der sekundären Region haben, bevor Sie eine Failover-Reservierung konfigurieren. Wenn in der sekundären Region kein Kontingent verfügbar ist, können Sie die Reservierung nicht konfigurieren. Weitere Informationen finden Sie unter Kontingente und Limits.

Preise

Für die Konfiguration einer verwalteten Notfallwiederherstellung sind die folgenden Preismodelle erforderlich:

  • Rechenkapazität: Sie müssen die Enterprise Plus-Version erwerben.

  • Turboreplikation: Die Notfallwiederherstellung basiert auf der Turboreplikation während der Replikation. Die Gebühren richten sich nach physischen Byte und den replizierten physischen GB. Weitere Informationen finden Sie unter Cloud Storage – Preise.

  • Speicher: Speicherbyte in der sekundären Region werden zum gleichen Preis wie Speicherbyte in der primären Region abgerechnet. Weitere Informationen finden Sie unter Speicherpreise.

Kunden müssen nur für die Rechenkapazität in der primären Region bezahlen. Die sekundäre Rechenkapazität (basierend auf der Reservierungsreferenz) ist in der sekundären Region ohne zusätzliche Kosten verfügbar. Inaktive Slots können die sekundäre Rechenkapazität nur verwenden, wenn für die Reservierung ein Failover durchgeführt wurde.

Wenn Sie veraltete Lesevorgänge in der sekundären Region ausführen müssen, können Sie zusätzliche Enterprise Plus-Rechenkapazität in der sekundären Region erwerben.

Enterprise Plus-Reservierung erstellen oder ändern

Bevor Sie ein Dataset an eine Reservierung anhängen, müssen Sie eine Enterprise Plus-Reservierung erstellen oder eine vorhandene Reservierung ändern und für die Notfallwiederherstellung konfigurieren.

Reservierung erstellen

Entscheiden Sie sich für eine der folgenden Möglichkeiten:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Klicken Sie im Navigationsmenü auf Kapazitätsverwaltung und dann auf Reservierung erstellen.

  3. Geben Sie im Feld Name der Reservierung einen Namen für die Reservierung ein.

  4. Wählen Sie in der Liste Standort einen Standort aus.

  5. Wählen Sie in der Liste Version die Enterprise Plus-Version aus.

  6. Wählen Sie in der Liste Maximale Reservierungsgröße die maximale Reservierungsgröße aus.

  7. Optional: Geben Sie im Feld Referenz-Slots die Anzahl der Referenz-Slots für die Reservierung ein.

    Die Anzahl der verfügbaren Autoscaling-Slots wird bestimmt, indem der Wert für Referenz-Slots vom Wert Maximale Reservierungsgröße abgezogen wird. Wenn Sie beispielsweise eine Reservierung mit 100 Referenz-Slots und einer maximalen Reservierungsgröße von 400 erstellen, hat Ihre Reservierung 300 Autoscaling-Slots. Weitere Informationen zu Referenz-Slots finden Sie unter Reservierungen mit Slots für Referenz und Autoscaling verwenden.

  8. Wählen Sie in der Liste Sekundärer Standort den sekundären Standort aus.

  9. Wenn Sie die Freigabe inaktiver Slots deaktivieren und nur die angegebene Slotkapazität verwenden möchten, klicken Sie auf die Schaltfläche Inaktive Slots ignorieren.

  10. Klicken Sie zum Erweitern des Abschnitts Erweiterte Einstellungen auf den Erweiterungspfeil.

  11. Optional: Um die Zielnebenläufigkeit von Jobs festzulegen, klicken und aktivieren Sie die Schaltfläche Automatische Zielnebenläufigkeit von Jobs überschreiben und geben Sie einen Wert für die Zielnebenläufigkeit von Jobs ein. Die Aufschlüsselung der Slots wird in der Tabelle Kostenschätzung angezeigt. In der Tabelle Kapazitätsübersicht wird eine Zusammenfassung der Reservierung angezeigt.

  12. Klicken Sie auf Speichern.

Die neue Reservierung ist auf dem Tab Slot-Reservierungen zu sehen.

SQL

Verwenden Sie zum Erstellen einer Reservierung die DDL-Anweisung CREATE RESERVATION.

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

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

    Ersetzen Sie Folgendes:

    • ADMIN_PROJECT_ID: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehört
    • LOCATION: Der Standort der Reservierung. Wenn Sie einen BigQuery Omni-Standort auswählen, ist Ihre Versionsoption auf die Enterprise-Version beschränkt.
    • RESERVATION_NAME: der Name der Reservierung

      Der Name muss mit einem Kleinbuchstaben oder einer Zahl beginnen und enden. Er darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.

    • NUMBER_OF_SLOTS: die Anzahl der Slots, die der Reservierung zugewiesen werden sollen. Die Zusicherung muss genügend nicht zugewiesene Slots aufweisen. Sie können die Optionen slot_capacity und edition nicht in derselben Reservierung festlegen.
    • SECONDARY_LOCATION: der sekundäre Standort der Reservierung. Bei einem Ausfall wird für alle mit dieser Reservierung verknüpften Datasets ein Failover zu diesem Standort ausgeführt.

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

Vorhandene Reservierung ändern

Entscheiden Sie sich für eine der folgenden Möglichkeiten:

Console

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.

    BigQuery aufrufen

  2. Gehen Sie im Navigationsbereich zum Abschnitt Kapazitätsverwaltung.

  3. Klicken Sie auf den Tab Slot-Reservierungen.

  4. Suchen Sie die Reservierung, die Sie aktualisieren möchten.

  5. Maximieren Sie die Option Aktionen.

  6. Klicken Sie auf Bearbeiten.

  7. Geben Sie im Feld Sekundärer Standort den sekundären Standort ein.

  8. Klicken Sie auf Speichern.

SQL

Mit der DDL-Anweisung ALTER RESERVATION SET OPTIONS können Sie einen sekundären Standort zu einer Reservierung hinzufügen oder ändern.

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

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

    Ersetzen Sie Folgendes:

    • ADMIN_PROJECT_ID: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehört
    • LOCATION: der Standort der Reservierung, z. B. europe-west9.
    • RESERVATION_NAME: der Name der Reservierung Der Name muss mit einem Kleinbuchstaben oder einer Zahl beginnen und enden. Er darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.

    • SECONDARY_LOCATION: der sekundäre Standort der Reservierung. Bei einem Ausfall wird für alle mit dieser Reservierung verknüpften Datasets ein Failover zu diesem Standort ausgeführt.

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

Dataset an eine Reservierung anhängen

Führen Sie die folgenden Schritte aus, um die Notfallwiederherstellung für die zuvor erstellte Reservierung zu aktivieren. Das Dataset muss bereits für die Replikation in derselben primären und sekundären Region wie die Reservierung konfiguriert sein. Weitere Informationen finden Sie unter Regionenübergreifende Dataset-Replikation.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Klicken Sie im Navigationsmenü auf Kapazitätsverwaltung und dann auf den Tab Slot-Reservierungen.

  3. Klicken Sie auf die Reservierung, an die Sie ein Dataset anhängen möchten.

  4. Klicken Sie auf den Tab Notfallwiederherstellung.

  5. Klicken Sie auf Verknüpftes Dataset hinzufügen.

  6. Geben Sie den Namen des Datasets ein, das Sie mit der Reservierung verknüpfen möchten.

  7. Klicken Sie auf Hinzufügen.

SQL

Mit der DDL-Anweisung ALTER SCHEMA SET OPTIONS können Sie ein Dataset an eine Reservierung anhängen.

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

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

    Ersetzen Sie Folgendes:

    • DATASET_NAME: der Name des Datasets

    • RESERVATION_NAME: der Name der Reservierung, der Sie das Dataset zuordnen möchten.

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

Failover auslösen

Bei einem regionalen Ausfall müssen Sie Ihre Reservierung manuell an den Standort übertragen, der vom Replikat verwendet wird. Das Failover der Reservierung umfasst auch alle zugehörigen Datasets. So führen Sie ein manuelles Failover für eine Reservierung aus:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Klicken Sie im Navigationsmenü auf Notfallwiederherstellung.

  3. Klicken Sie auf den Namen der Reservierung, für die Sie ein Failover ausführen möchten.

  4. Klicken Sie auf Failover.

SQL

Verwenden Sie die DDL-Anweisung ALTER RESERVATION SET OPTIONS und setzen Sie is_primary auf TRUE, um einen sekundären Standort zu einer Reservierung hinzuzufügen oder zu ändern.

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

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

    Ersetzen Sie Folgendes:

    • ADMIN_PROJECT_ID: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehört
    • LOCATION: der Standort der Reservierung, z. B. europe-west9.
    • RESERVATION_NAME: der Name der Reservierung Der Name muss mit einem Kleinbuchstaben oder einer Zahl beginnen und enden. Er darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.

    • PRIMARY_STATUS: ein boolescher Status, der angibt, ob die Reservierung das primäre Replikat ist.

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

Monitoring

Fragen Sie die Ansicht INFORMATION_SCHEMA.SCHEMATA_REPLICAS ab, um den Status der Replikate zu ermitteln. Beispiele:

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"

Die folgende Abfrage gibt die Jobs der letzten sieben Tage zurück, die fehlschlagen würden, wenn ihre Datasets Failover-Datasets wären:

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']);

Ersetzen Sie Folgendes:

  • PROJECT_ID: Projekt-ID.
  • DATASET_ID: Die Dataset-ID.
  • LOCATION: der Standort.

Nächste Schritte