Vista SCHEMATA_REPLICAS

La vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS contiene información sobre las réplicas de esquemas.

Rol necesario

Para obtener los permisos que necesitas para consultar la vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS, pide a tu administrador que te asigne el rol de gestión de identidades y accesos Lector de datos de BigQuery (roles/bigquery.dataViewer) en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Esquema

La vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS contiene información sobre las réplicas de conjuntos de datos. La vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS tiene el siguiente esquema:
Columna Tipo Descripción
catalog_name STRING El ID del proyecto que contiene el conjunto de datos.
schema_name STRING ID del conjunto de datos.
replica_name STRING Nombre de la réplica.
location STRING La región o multirregión en la que se creó la réplica.
replica_primary_assigned BOOL Si el valor es TRUE, la réplica tiene la asignación principal.
replica_primary_assignment_complete BOOL Si el valor es TRUE, la asignación principal se ha completado. Si el valor es FALSE, la réplica no es (todavía) la réplica principal, aunque replica_primary_assigned sea igual a TRUE.
creation_time TIMESTAMP Hora de creación de la réplica. Cuando se crea la réplica por primera vez, no se sincroniza completamente con la réplica principal hasta que creation_complete es igual a TRUE. El valor de creation_time se define antes de que creation_complete sea igual a TRUE.
creation_complete BOOL Si el valor es TRUE, la sincronización completa inicial de la réplica principal con la secundaria se ha completado.
replication_time TIMESTAMP

El valor de replication_time indica la antigüedad del conjunto de datos.

Es posible que algunas tablas de la réplica estén más adelantadas que esta marca de tiempo. Este valor solo se puede ver en la región secundaria.

Si el conjunto de datos contiene una tabla con datos de streaming, el valor de replication_time no será preciso.

sync_status JSON Estado de la sincronización entre la réplica principal y la secundaria. Devuelve NULL si la réplica es una réplica principal.

Ámbito y sintaxis

Las consultas en esta vista deben incluir un calificador de región. En la siguiente tabla se explica el ámbito de la región de esta vista:

Nombre de la vista Ámbito de los recursos Ámbito de la región
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS[_BY_PROJECT] Nivel de proyecto REGION
Sustituye lo siguiente:
  • Opcional: PROJECT_ID: el ID de tu Google Cloud proyecto. Si no se especifica, se usa el proyecto predeterminado.
  • REGION: cualquier nombre de región del conjunto de datos. Por ejemplo, `region-us`.

Ejemplos

En esta sección se incluyen ejemplos de consultas de la vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS.

Ejemplo: enumerar todos los conjuntos de datos replicados de una región

En el siguiente ejemplo se enumeran todos los conjuntos de datos replicados en la región US:

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

El resultado es similar al siguiente:

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

Ejemplo: Lista de conjuntos de datos replicados y la réplica principal de cada uno

En el siguiente ejemplo se enumeran todos los conjuntos de datos replicados y su réplica principal en la región 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;

El resultado es similar al siguiente:

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

Ejemplo: enumerar conjuntos de datos replicados y sus estados de réplica

En el siguiente ejemplo se muestran todos los conjuntos de datos replicados y sus estados de réplica:

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;

El resultado es similar al siguiente:

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

Ejemplo: Lista de cuándo se creó cada réplica y si el relleno inicial se ha completado

En el siguiente ejemplo se muestran todas las réplicas y cuándo se crearon. Cuando se crea una réplica secundaria, sus datos no se sincronizan completamente con la réplica principal hasta que creation_complete es igual 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;

El resultado es similar al siguiente:

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

Ejemplo: Mostrar la hora de la última sincronización

En el ejemplo siguiente se muestra la marca de tiempo más reciente en la que la réplica secundaria se ha puesto al día con la réplica principal.

Debes ejecutar esta consulta en la región que contenga la réplica secundaria. Es posible que algunas tablas del conjunto de datos se hayan replicado antes de lo que se indica.

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

El resultado es similar al siguiente:

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

El valor NULL indica que la réplica secundaria nunca se ha sincronizado por completo con la réplica principal.