Vista SCHEMATA_REPLICAS

La vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS contiene informazioni sulle repliche degli schemi.

Ruolo richiesto

Per ottenere le autorizzazioni necessarie per eseguire query sulla vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS, chiedi all'amministratore di concederti il ruolo IAM Visualizzatore dati BigQuery (roles/bigquery.dataViewer) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Schema

La vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS contiene informazioni sulle repliche dei set di dati. La vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS ha il seguente schema:
Colonna Tipo Descrizione
catalog_name STRING L'ID progetto del progetto che contiene il set di dati.
schema_name STRING L'ID set di dati del set di dati.
replica_name STRING Il nome della replica.
location STRING La regione o la multiregione in cui è stata creata la replica.
replica_primary_assigned BOOL Se il valore è TRUE, la replica ha l'assegnazione primaria. Quando modifichi una replica secondaria in una primaria, questo stato ha effetto immediato.
replica_primary_assignment_complete BOOL Se il valore è TRUE, l'assegnazione primaria è completa. Se il valore è FALSE, la replica non è (ancora) la replica primaria, anche se replica_primary_assigned è uguale a TRUE. Per informazioni sul tempo necessario affinché una replica secondaria diventi primaria, consulta Promuovere la replica secondaria.
creation_time TIMESTAMP L'ora di creazione della replica tempo. Quando la replica viene creata per la prima volta, non è completamente sincronizzata con la replica primaria finché creation_complete non è uguale a TRUE. Il valore di creation_time viene impostato prima che creation_complete sia uguale a TRUE.
creation_complete BOOL Se il valore è TRUE, la sincronizzazione completa iniziale della replica primaria con la replica secondaria è stata completata.
replication_time TIMESTAMP

Il valore di replication_time indica la vetustà del set di dati.

Alcune tabelle nella replica potrebbero essere più recenti di questo timestamp. Questo valore è visibile solo nella regione secondaria.

Se il set di dati contiene una tabella con dati di streaming, il valore di replication_time non sarà accurato.

sync_status JSON Lo stato della sincronizzazione tra le repliche primaria e secondaria per i set di dati di replica tra regioni e di disaster recovery. Restituisce NULL se la replica è una replica primaria o se il set di dati non utilizza la replica.
replica_primary_assignment_time TIMESTAMP L'ora in cui è stato attivato il passaggio alla replica primaria.
replica_primary_assignment_completion_time TIMESTAMP L'ora in cui è stato completato il passaggio alla replica primaria.

Per garantire la stabilità, ti consigliamo di elencare esplicitamente le colonne nelle query dello schema informativo anziché utilizzare un carattere jolly (SELECT *). L'elenco esplicito delle colonne impedisce l'interruzione delle query se lo schema sottostante cambia.

Ambito e sintassi

Le query su questa vista devono includere un qualificatore di regione. La tabella seguente spiega l'ambito della regione per questa vista:

Nome vista Ambito risorsa Ambito regione
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS[_BY_PROJECT] Livello progetto REGION
Sostituisci quanto segue:
  • (Facoltativo) PROJECT_ID: l'ID del tuo Cloud de Confiance progetto. Se non viene specificato, viene utilizzato il progetto predefinito.
  • REGION: il nome di una regione del set di dati. Ad esempio, `region-us`.

Esempi

Questa sezione elenca le query di esempio della vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS.

Esempio: elencare tutti i set di dati replicati in una regione

L'esempio seguente elenca tutti i set di dati replicati nella regione US:

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

Il risultato è simile al seguente:

+---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+
|    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 |
+---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+

Esempio: elencare i set di dati replicati e la replica primaria per ciascuno

L'esempio seguente elenca tutti i set di dati replicati e la relativa replica primaria nella regione US:

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;

Il risultato è simile al seguente:

+---------------------+-------------+----------------------+--------------------------+------------+
|    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 |
+---------------------+-------------+----------------------+--------------------------+------------+

Esempio: elencare i set di dati replicati e i relativi stati di replica

L'esempio seguente elenca tutti i set di dati replicati e i relativi stati di replica:

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;

Il risultato è simile al seguente:

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

Esempio: elencare la data di creazione di ogni replica e se il backfill iniziale è stato completato

L'esempio seguente elenca tutte le repliche e la data di creazione di ciascuna. Quando viene creata una replica secondaria, i relativi dati non vengono sincronizzati completamente con la replica primaria finché creation_complete non è uguale a TRUE.

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

Il risultato è simile al seguente:

+---------------------+-------------+--------------+---------------------+
|    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 |
+---------------------+-------------+--------------+---------------------+

Esempio: mostrare l'ora di sincronizzazione più recente

L'esempio seguente mostra il timestamp più recente in cui la replica secondaria ha raggiunto la replica primaria.

Devi eseguire questa query nella regione che contiene la replica secondaria. Alcune tabelle nel set di dati potrebbero essere più recenti dell'ora di replica segnalata.

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

Il risultato è simile al seguente:

+---------------------+-------------+--------------+-----+-----+-------------------------------------------+
|    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 |
+---------------------+-------------+--------------+-----+-----+-------------------------------------------+

Un valore NULL indica che la replica secondaria non è mai stata sincronizzata completamente con la replica primaria.