Vista de SCHEMATA_REPLICAS
La vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS contiene información sobre las réplicas de esquemas.
Roles obligatorios
Para obtener el permiso que
necesitas para consultar la vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS,
pídele a tu administrador que te otorgue el
Visualizador de datos de BigQuery (roles/bigquery.dataViewer) de IAM en el proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene el
bigquery.datasets.get
permiso,
que se requiere para
consultar la vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS.
También puedes obtener este permiso con roles personalizados o otros roles predefinidos.
Esquema
La vistaINFORMATION_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 |
El ID del conjunto de datos. |
replica_name |
STRING |
El 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. Cuando cambias
a una réplica secundaria a una principal, este estado entra en vigencia de inmediato. |
replica_primary_assignment_complete |
BOOL |
Si el valor es TRUE, la asignación principal está completa.
Si el valor es FALSE, la réplica no es (aún) la réplica principal, incluso si replica_primary_assigned es igual a TRUE. Para obtener información sobre cuánto tiempo tarda una réplica secundaria en
convertirse en principal,
consulta Asciende la réplica secundaria. |
creation_time |
TIMESTAMP |
La hora de creación
de la réplica. Cuando se crea la réplica por primera vez, no se sincroniza por completo con la réplica principal hasta que
creation_complete sea igual a TRUE. El valor de
creation_time se establece 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 réplica secundaria está completa. |
replication_time |
TIMESTAMP |
El valor de Es posible que algunas tablas de la réplica estén más avanzadas que esta marca de tiempo. Este valor solo es visible en la región secundaria. Si el conjunto de datos contiene una tabla con datos de transmisión, el valor de |
sync_status |
JSON |
El estado de la sincronización entre las réplicas principal y secundaria para la replicación
entre regiones y los conjuntos de datos de recuperación ante desastres. Muestra NULL si la réplica es una réplica principal o si el conjunto de datos no usa la replicación. |
replica_primary_assignment_time |
TIMESTAMP |
La hora en la que se activó el cambio principal a la réplica. |
replica_primary_assignment_completion_time |
TIMESTAMP |
La hora en la que se completó el cambio principal a la réplica. |
Para lograr estabilidad, te recomendamos que enumeres las columnas de forma explícita en las consultas de esquema de información en lugar de usar un comodín (SELECT *). Si enumeras las columnas de forma explícita, se evita que las consultas se interrumpan si cambia el esquema subyacente.
Permiso y sintaxis
Las consultas realizadas a esta vista deben incluir un calificador de región. En la siguiente tabla, se explica el permiso de la región para esta vista:
| Nombre de la vista | Permiso del recurso | Permiso de la región |
|---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS[_BY_PROJECT] |
Nivel de proyecto | REGION |
-
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 enumeran consultas de ejemplo de la vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS.
Ejemplo: Enumera todos los conjuntos de datos replicados en 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: Enumera los 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: Enumera los conjuntos de datos replicados y sus estados de réplica
En el siguiente ejemplo, se enumeran 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: Enumera cuándo se creó cada réplica y si se completó el relleno inicial
En el siguiente ejemplo, se enumeran todas las réplicas y cuándo se creó cada una. Cuando se crea una réplica secundaria, sus datos no se sincronizan por completo con la réplica principal hasta que creation_complete sea 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: Muestra la hora sincronizada más reciente
En el siguiente ejemplo, se muestra la marca de tiempo más reciente en la que la réplica secundaria se puso al día con la réplica principal.
Debes ejecutar esta consulta en la región que contiene la réplica secundaria. Es posible que algunas tablas del conjunto de datos estén más avanzadas que la hora de replicación informada.
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 | +---------------------+-------------+--------------+-----+-----+-------------------------------------------+
Un valor de NULL indica que la réplica secundaria nunca se sincronizó por completo con la réplica principal.