Vista de SCHEMATA_REPLICAS

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

Función requerida

Para obtener los permisos que necesitas para consultar la vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS, pídele a tu administrador que te otorgue el rol 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.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

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 Es 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.
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.
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 replication_time indica el estado inactivo del conjunto de datos.

Es posible que algunas tablas de la réplica estén por delante de 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 transmisión, el valor de replication_time no será preciso.

sync_status JSON El estado de la sincronización entre la réplica principal y la secundaria Muestra NULL si la réplica es una réplica principal.

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
Reemplaza lo siguiente:

  • Opcional: PROJECT_ID: el ID del proyecto de Google Cloud. 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 ejemplos de consultas 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: Muestra cuándo se creó cada réplica y si se completó el reabastecimiento inicial

    En el siguiente ejemplo, se enumeran todas las réplicas y cuándo se crearon. 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 cuando 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 por delante del tiempo de replicación informado.

    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.