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 INFORMATION_SCHEMA.SCHEMATA_REPLICAS Ansicht benötigen, bitten Sie Ihren Administrator, Ihnen die BigQuery-Datenbetrachter (roles/bigquery.dataViewer) IAM-Rolle 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 AnsichtINFORMATION_SCHEMA.SCHEMATA_REPLICAS enthält Informationen zu Dataset-Replikaten.
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. Wenn Sie
ein sekundäres Replikat in ein primäres Replikat ändern, wird dieser Status sofort wirksam. |
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. Informationen dazu, wie lange es dauert, bis ein sekundäres Replikat zu einem primären Replikat wird, finden Sie unter Sekundäres Replikat hochstufen. |
creation_time |
TIMESTAMP |
Der Erstellungszeitpunkt des Replikats. 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 Einige Tabellen im Replikat liegen möglicherweise vor diesem Zeitstempel. Dieser Wert ist nur in der sekundären Region sichtbar. Wenn das Dataset eine Tabelle mit Streamingdaten enthält, ist der Wert von |
sync_status |
JSON |
Der Status der Synchronisierung zwischen den primären und sekundären Replikaten für regionenübergreifende
Replikations- und Notfallwiederherstellungs-Datasets. NULL wird zurückgegeben, wenn das Replikat ein primäres Replikat ist oder das Dataset keine Replikation verwendet. |
replica_primary_assignment_time |
TIMESTAMP |
Der Zeitpunkt, zu dem der primäre Wechsel zum Replikat ausgelöst wurde. |
replica_primary_assignment_completion_time |
TIMESTAMP |
Der Zeitpunkt, zu dem der primäre Wechsel zum Replikat abgeschlossen wurde. |
Aus Stabilitätsgründen empfehlen wir, Spalten in Ihren Informationsschema-Abfragen explizit aufzulisten, anstatt einen Platzhalter (SELECT *) zu verwenden. Wenn Sie Spalten explizit auflisten, wird verhindert, dass Abfragen fehlschlagen, wenn sich das zugrunde liegende Schema ändert.
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] |
Projektebene | REGION |
-
Optional:
PROJECT_ID: die ID Ihres Cloud de Confiance Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet. -
REGION: ist ein beliebiger Dataset-Regionsname. Beispiel:`region-us`.
Beispiele
In diesem Abschnitt sind Beispielabfragen der Ansicht INFORMATION_SCHEMA.SCHEMATA_REPLICAS 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 die einzelnen Replikate erstellt wurden und ob die erste Backfill-Aufgabe 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: Letzten Synchronisierungszeitpunkt 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.