Ansicht SCHEMATA_REPLICAS

Die Ansicht INFORMATION_SCHEMA.SCHEMATA_REPLICAS enthält Informationen zu Schemareplikaten.

Erforderliche Rolle

Um die Berechtigungen zu erhalten, die Sie zum Abfragen der Ansicht INFORMATION_SCHEMA.SCHEMATA_REPLICAS benötigen, müssen Sie Ihren Administrator bitten, Ihnen die IAM-Rolle BigQuery-Datenbetrachter (roles/bigquery.dataViewer) für das Projekt zu gewähren. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Schema

Die Ansicht INFORMATION_SCHEMA.SCHEMATA_REPLICAS enthält Informationen zu Dataset-Repliken. Die Ansicht INFORMATION_SCHEMA.SCHEMATA_REPLICAS hat das folgende Schema:
Spalte Typ Beschreibung
catalog_name STRING Die ID des Projekts, das das Dataset enthält.
schema_name STRING Die Dataset-ID des Datasets.
replica_name STRING Der Name des Replikats.
location STRING Die Region oder Multiregion, in der das Replikat erstellt wurde.
replica_primary_assigned BOOL Wenn der Wert TRUE ist, hat das Replikat die primäre Zuweisung.
replica_primary_assignment_complete BOOL Wenn der Wert TRUE ist, ist die primäre Zuweisung abgeschlossen. Wenn der Wert FALSE ist, ist das Replikat (noch) nicht das primäre Replikat, auch wenn replica_primary_assigned gleich TRUE ist.
creation_time TIMESTAMP Der Erstellungszeitpunkt des Replicas. Wenn das Replikat zum ersten Mal erstellt wird, wird es erst dann vollständig mit dem primären Replikat synchronisiert, wenn creation_complete gleich TRUE ist. Der Wert von creation_time wird festgelegt, bevor creation_complete gleich TRUE ist.
creation_complete BOOL Bei einem Wert von TRUE ist die erste vollständige Synchronisierung des primären Replikats mit dem sekundären Replikat abgeschlossen.
replication_time TIMESTAMP

Der Wert für replication_time gibt an, wie alt die Daten im Datensatz sind.

Einige Tabellen im Replikat liegen möglicherweise vor diesem Zeitstempel. Dieser Wert ist nur in der sekundären Region sichtbar.

Wenn der Datensatz eine Tabelle mit Streamingdaten enthält, ist der Wert von replication_time nicht korrekt.

sync_status JSON Der Status der Synchronisierung zwischen dem primären und dem sekundären Replikat. Gibt NULL zurück, wenn es sich um ein primäres Replikat handelt.

Bereich und Syntax

Für Abfragen dieser Ansicht muss ein Regions-Qualifier verwendet werden. In der folgenden Tabelle wird der Regionsbereich für diese Ansicht erläutert:

Ansichtsname Ressourcenbereich Regionsbereich
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS[_BY_PROJECT] auf Projektebene REGION
Ersetzen Sie Folgendes:

  • Optional: PROJECT_ID: die ID Ihres Google Cloud-Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet.

  • REGION: ist ein beliebiger Dataset-Regionsname. Beispiel: `region-us`

  • Beispiele

    In diesem Abschnitt sind Beispielabfragen für die INFORMATION_SCHEMA.SCHEMATA_REPLICAS-Ansicht aufgeführt.

    Beispiel: Alle replizierten Datasets in einer Region auflisten

    Im folgenden Beispiel werden alle replizierten Datasets in der Region US aufgelistet:

    SELECT * FROM `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS;

    Das Ergebnis sieht etwa so aus:

    +---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+
    |    catalog_name     |    schema_name    | replica_name | location | replica_primary_assigned | replica_primary_assignment_complete |    creation_time    | creation_complete | replication_time |
    +---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+
    | myproject           | replica1          | us-east7     | us-east7 |                     true |                                true | 2023-04-17 20:42:45 |              true |             NULL |
    | myproject           | replica1          | us-east4     | us-east4 |                    false |                               false | 2023-04-17 20:44:26 |              true |             NULL |
    +---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+
    

    Beispiel: Replizierte Datasets und das jeweilige primäre Replikat auflisten

    Im folgenden Beispiel werden alle replizierten Datasets und das jeweilige primäre Replikat in der Region US aufgelistet:

    SELECT
     catalog_name,
     schema_name,
     replica_name AS primary_replica_name,
     location AS primary_replica_location,
     replica_primary_assignment_complete AS is_primary,
    FROM
     `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
    WHERE
     replica_primary_assignment_complete = TRUE
     AND replica_primary_assigned = TRUE;

    Das Ergebnis sieht etwa so aus:

    +---------------------+-------------+----------------------+--------------------------+------------+
    |    catalog_name     | schema_name | primary_replica_name | primary_replica_location | is_primary |
    +---------------------+-------------+----------------------+--------------------------+------------+
    | myproject           | my_schema1  | us-east4             | us-east4                 |       true |
    | myproject           | my_schema2  | us                   | US                       |       true |
    | myproject           | my_schema2  | us                   | US                       |       true |
    +---------------------+-------------+----------------------+--------------------------+------------+
    

    Beispiel: Replizierte Datasets und den jeweiligen Replikatstatus auflisten

    Im folgenden Beispiel werden alle replizierten Datasets und der jeweilige Replikatstatus aufgelistet:

    SELECT
      catalog_name,
      schema_name,
      replica_name,
      CASE
        WHEN (replica_primary_assignment_complete = TRUE AND replica_primary_assigned = TRUE) THEN 'PRIMARY'
        WHEN (replica_primary_assignment_complete = FALSE
        AND replica_primary_assigned = FALSE) THEN 'SECONDARY'
      ELSE
      'PENDING'
    END
      AS replica_state,
    FROM
      `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS;

    Das Ergebnis sieht etwa so aus:

    +---------------------+-------------+--------------+---------------+
    |    catalog_name     | schema_name | replica_name | replica_state |
    +---------------------+-------------+--------------+---------------+
    | myproject           | my_schema1  | us-east4     | PRIMARY       |
    | myproject           | my_schema1  | my_replica   | SECONDARY     |
    +---------------------+-------------+--------------+---------------+
    

    Beispiel: Auflisten, wann jedes Replikat erstellt wurde und ob das anfängliche Backfill abgeschlossen ist

    Im folgenden Beispiel werden alle Replikate und der Zeitstempel aufgelistet, zu dem das Replikat erstellt wurde. Wenn ein sekundäres Replikat erstellt wird, werden die zugehörigen Daten erst dann vollständig mit dem primären Replikat synchronisiert, wenn creation_complete gleich TRUE ist.

    SELECT
     catalog_name,
     schema_name,
     replica_name,
     creation_time AS creation_time,
    FROM
     `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
    WHERE
     creation_complete = TRUE;

    Das Ergebnis sieht etwa so aus:

    +---------------------+-------------+--------------+---------------------+
    |    catalog_name     | schema_name | replica_name |    creation_time    |
    +---------------------+-------------+--------------+---------------------+
    | myproject           | my_schema1  | us-east4     | 2023-06-15 00:09:11 |
    | myproject           | my_schema2  | us           | 2023-06-15 00:19:27 |
    | myproject           | my_schema2  | my_replica2  | 2023-06-15 00:19:50 |
    | myproject           | my_schema1  | my_replica   | 2023-06-15 00:16:19 |
    +---------------------+-------------+--------------+---------------------+
    

    Beispiel: Letzte synchronisierte Uhrzeit anzeigen

    Im folgenden Beispiel wird der neueste Zeitstempel angezeigt, zu dem das sekundäre Replikat mit dem primären Replikat erfasst wurde.

    Sie müssen diese Abfrage in der Region ausführen, die das sekundäre Replikat enthält. Einige Tabellen im Dataset sind möglicherweise der erfassten Replikationszeit voraus.

    SELECT
     catalog_name,
     schema_name,
     replica_name,
     -- Calculate the replication lag in seconds.
     TIMESTAMP_DIFF(CURRENT_TIMESTAMP(), replication_time, SECOND) AS replication_lag_seconds, -- RLS
     -- Calculate the replication lag in minutes.
     TIMESTAMP_DIFF(CURRENT_TIMESTAMP(), replication_time, MINUTE) AS replication_lag_minutes, -- RLM
     -- Show the last sync time for easier interpretation.
     replication_time AS secondary_replica_fully_synced_as_of_time,
    FROM
     `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS

    Das Ergebnis sieht etwa so aus:

    +---------------------+-------------+--------------+-----+-----+-------------------------------------------+
    |    catalog_name     | schema_name | replica_name | rls | rlm | secondary_replica_fully_synced_as_of_time |
    +---------------------+-------------+--------------+-----+-----+-------------------------------------------+
    | myproject           | my_schema1  | us-east4     |  23 |   0 |                       2023-06-15 00:18:49 |
    | myproject           | my_schema2  | us           |  67 |   1 |                       2023-06-15 00:22:49 |
    | myproject           | my_schema1  | my_replica   |  11 |   0 |                       2023-06-15 00:28:49 |
    | myproject           | my_schema2  | my_replica2  | 125 |   2 |                       2023-06-15 00:29:20 |
    +---------------------+-------------+--------------+-----+-----+-------------------------------------------+
    

    Ein Wert von NULL gibt an, dass das sekundäre Replikat nie vollständig mit dem primären Replikat synchronisiert wurde.