Visualização SCHEMATA_REPLICAS

A visualização INFORMATION_SCHEMA.SCHEMATA_REPLICAS contém informações sobre réplicas do schemata.

Papel necessário

Para receber as permissões necessárias para consultar a visualização INFORMATION_SCHEMA.SCHEMATA_REPLICAS, peça ao administrador para conceder a você o papel Visualizador de dados do BigQuery (roles/bigquery.dataViewer) do IAM no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Esquema

A visualização INFORMATION_SCHEMA.SCHEMATA_REPLICAS contém informações sobre réplicas de conjuntos de dados. A visualização INFORMATION_SCHEMA.SCHEMATA_REPLICAS tem o seguinte esquema:
Coluna Tipo Descrição
catalog_name STRING O ID do projeto que contém o conjunto de dados.
schema_name STRING O ID do conjunto de dados.
replica_name STRING O nome da réplica.
location STRING A região ou a multirregião em que a réplica foi criada.
replica_primary_assigned BOOL Se o valor for TRUE, a réplica terá a atribuição principal.
replica_primary_assignment_complete BOOL Se o valor for TRUE, a atribuição principal foi concluída. Se o valor for FALSE, a réplica (ainda) não é a principal, mesmo que replica_primary_assigned seja igual a TRUE.
creation_time TIMESTAMP O horário de criação da réplica. Quando a réplica é criada pela primeira vez, ela não é totalmente sincronizada com a réplica principal até creation_complete ser igual a TRUE. O valor de creation_time é definido antes de creation_complete ser TRUE.
creation_complete BOOL Se o valor for TRUE, a sincronização completa inicial da réplica principal para a secundária será concluída.
replication_time TIMESTAMP

O valor de replication_time indica a inatividade do conjunto de dados.

Algumas tabelas na réplica podem estar à frente desse carimbo de data/hora. Esse valor só é visível na região secundária.

Se o conjunto de dados contiver uma tabela com dados de streaming, o valor de replication_time não será preciso.

sync_status JSON O status da sincronização entre a réplica principal e a secundária. Retorna NULL se a réplica for principal.

Escopo e sintaxe

As consultas nessa visualização precisam incluir um qualificador de região. A tabela a seguir explica o escopo da região dessa visualização:

Nome da visualização Escopo do recurso Escopo da região
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS[_BY_PROJECT] Nível do projeto REGION
Substitua:

  • Opcional: PROJECT_ID: o ID do seu projeto do Google Cloud. Se não for especificado, o projeto padrão será usado.

  • REGION: qualquer nome da região do conjunto de dados. Por exemplo, `region-us`.

  • Examples

    Nesta seção, listamos exemplos de consultas da visualização INFORMATION_SCHEMA.SCHEMATA_REPLICAS.

    Exemplo: listar todos os conjuntos de dados replicados em uma região

    O exemplo a seguir lista todos os conjuntos de dados replicados na região US:

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

    O resultado será semelhante ao seguinte:

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

    Exemplo: listar conjuntos de dados replicados e a réplica primária de cada um

    O exemplo a seguir lista todos os conjuntos de dados replicados e a réplica principal deles na região 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;

    O resultado será semelhante ao seguinte:

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

    Exemplo: listar conjuntos de dados replicados e os respectivos estados de réplica

    O exemplo a seguir lista todos os conjuntos de dados replicados e os respectivos 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;

    O resultado será semelhante ao seguinte:

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

    Exemplo: listar quando cada réplica foi criada e se o preenchimento inicial foi concluído

    O exemplo a seguir lista todas as réplicas e quando ela foi criada. Quando uma réplica secundária é criada, os dados dela não são totalmente sincronizados com a réplica principal até que creation_complete seja 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;

    O resultado será semelhante ao seguinte:

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

    Exemplo: mostrar o horário sincronizado mais recente

    O exemplo a seguir mostra o carimbo de data/hora mais recente quando a réplica secundária alcançou a principal.

    Execute essa consulta na região que contém a réplica secundária. Algumas tabelas no conjunto de dados podem estar antes do tempo de replicação relatado.

    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

    O resultado será semelhante ao seguinte:

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

    Um valor de NULL indica que a réplica secundária nunca foi totalmente sincronizada com a principal.