Vue SCHEMATA_REPLICAS

La vue INFORMATION_SCHEMA.SCHEMATA_REPLICAS contient des informations sur les instances répliquées de schéma.

Rôle requis

Pour obtenir les autorisations nécessaires pour interroger la vue INFORMATION_SCHEMA.SCHEMATA_REPLICAS, demandez à votre administrateur de vous accorder le rôle IAM Lecteur de données BigQuery (roles/bigquery.dataViewer) sur le projet. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Schéma

La vue INFORMATION_SCHEMA.SCHEMATA_REPLICAS contient des informations sur les instances répliquées des ensembles de données. La vue INFORMATION_SCHEMA.SCHEMATA_REPLICAS présente le schéma suivant :
Colonne Type Description
catalog_name STRING ID du projet qui contient l'ensemble de données.
schema_name STRING ID de l'ensemble de données.
replica_name STRING Nom de l'instance répliquée.
location STRING Région ou emplacement multirégional dans lequel l'instance répliquée a été créée.
replica_primary_assigned BOOL Si la valeur est TRUE, l'instance répliquée possède l'attribution principale.
replica_primary_assignment_complete BOOL Si la valeur est TRUE, l'attribution principale est terminée. Si la valeur est FALSE, l'instance répliquée n'est pas (encore) l'instance répliquée principale, même si replica_primary_assigned est égal à TRUE.
creation_time TIMESTAMP Heure de création de l'instance répliquée. Lors de la création initiale de l'instance répliquée, celle-ci n'est pas entièrement synchronisée avec l'instance répliquée principale tant que creation_complete n'a pas la valeur TRUE. La valeur de creation_time est définie avant que creation_complete ne soit égal à TRUE.
creation_complete BOOL Si la valeur est TRUE, la synchronisation complète de l'instance répliquée principale avec l'instance répliquée secondaire est terminée.
replication_time TIMESTAMP

La valeur replication_time indique l'obsolescence de l'ensemble de données.

Certaines tables de l'instance répliquée peuvent être antérieures à cet horodatage. Cette valeur n'est visible que dans la région secondaire.

Si l'ensemble de données contient une table contenant des données par flux, la valeur de replication_time ne sera pas précise.

Champ d'application et syntaxe

Les requêtes exécutées sur cette vue doivent inclure un qualificatif de région. Le tableau suivant explique le champ d'application de la région pour cette vue :

Nom de la vue Champ d'application de la ressource Champ d'application de la région
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS[_BY_PROJECT] Niveau Projet REGION
Remplacez les éléments suivants :

  • Facultatif : PROJECT_ID : ID de votre projet Google Cloud. Si non spécifié, le projet par défaut est utilisé.
 + REGION : nom de la région de l'ensemble de données. Exemple : region-us.

Exemples

Cette section recense des exemples de requêtes de la vue INFORMATION_SCHEMA.SCHEMATA_REPLICAS.

Exemple : Recenser tous les ensembles de données répliqués d'une région

L'exemple suivant recense tous les ensembles de données répliqués dans la région US :

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

Le résultat ressemble à ce qui suit :

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

Exemple : Recenser les ensembles de données répliqués et leur instance répliquée principale

L'exemple suivant recense tous les ensembles de données répliqués et leur instance répliquée principale dans la région 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;

Le résultat ressemble à ce qui suit :

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

Exemple : Recenser les ensembles de données répliqués et les états de leurs instances répliquées

L'exemple suivant recense tous les ensembles de données répliqués et les états de leurs instances répliquées :

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;

Le résultat ressemble à ce qui suit :

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

Exemple : Recenser la date de création de chaque instance répliquée et indiquer si le remplissage initial est terminé.

L'exemple suivant recense toutes les instances répliquées et leur date de création. Lorsqu'une instance répliquée secondaire est créée, ses données ne sont pas entièrement synchronisées avec l'instance répliquée principale tant que creation_complete n'a pas la valeur TRUE.

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

Le résultat ressemble à ce qui suit :

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

Exemple : Afficher l'heure de dernière synchronisation

L'exemple suivant montre l'horodatage le plus récent du moment où l'instance répliquée secondaire a rattrapé l'instance répliquée principale.

Vous devez exécuter cette requête dans la région qui contient l'instance répliquée secondaire. Certaines tables de l'ensemble de données peuvent être antérieures à l'heure de réplication signalée.

SELECT
 catalog_name,
 schema_name,
 replica_name,
 replication_time AS secondary_replica_fully_synced_as_of_time,
FROM
 `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS

Le résultat ressemble à ce qui suit :

+---------------------+-------------+--------------+-------------------------------------------+
|    catalog_name     | schema_name | replica_name | secondary_replica_fully_synced_as_of_time |
+---------------------+-------------+--------------+-------------------------------------------+
| myproject           | my_schema1  | us-east4     |                                      NULL |
| myproject           | my_schema2  | us           |                                      NULL |
| myproject           | my_schema1  | my_replica   |                       2023-06-15 00:28:49 |
| myproject           | my_schema2  | my_replica2  |                       2023-06-15 00:29:20 |
+---------------------+-------------+--------------+-------------------------------------------+

La valeur NULL indique que l'instance répliquée secondaire n'a jamais été entièrement synchronisée avec l'instance dupliquée principale.