Vista SCHEMATA_REPLICAS
A vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS
contém informações sobre as réplicas de esquemas.
Função necessária
Para obter as autorizações de que
precisa para consultar a vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS
,
peça ao seu administrador para lhe conceder a função de IAM
visualizador de dados do BigQuery (roles/bigquery.dataViewer
) no projeto.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Esquema
A vistaINFORMATION_SCHEMA.SCHEMATA_REPLICAS
contém informações sobre as réplicas do conjunto de dados.
A vista 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 as várias regiões em que a réplica foi criada. |
replica_primary_assigned |
BOOL |
Se o valor for TRUE , a réplica tem a atribuição principal. |
replica_primary_assignment_complete |
BOOL |
Se o valor for TRUE , a atribuição principal está concluída.
Se o valor for FALSE , a réplica não é (ainda) a réplica primária, mesmo que replica_primary_assigned seja igual a TRUE . |
creation_time |
TIMESTAMP |
A hora de criação da réplica. Quando a réplica é criada pela primeira vez, não está totalmente sincronizada com a réplica principal até que
creation_complete seja igual a TRUE . O valor de
creation_time é definido antes de creation_complete ser igual a
TRUE . |
creation_complete |
BOOL |
Se o valor for TRUE , a sincronização completa inicial da réplica principal com a réplica secundária está concluída. |
replication_time |
TIMESTAMP |
O valor de Algumas tabelas na réplica podem estar à frente desta data/hora. Este valor só é visível na região secundária. Se o conjunto de dados contiver uma tabela com dados de streaming, o valor de |
sync_status |
JSON |
O estado da sincronização
entre a réplica principal e a secundária. Devolve NULL se a réplica for uma réplica principal. |
Âmbito e sintaxe
As consultas nesta vista têm de incluir um qualificador de região. A tabela seguinte explica o âmbito da região para esta vista:
Nome da visualização de propriedade | Âmbito do recurso | Âmbito da região |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS[_BY_PROJECT] |
Nível do projeto | REGION |
-
Opcional:
PROJECT_ID
: o ID do seu projeto do Google Cloud Google Cloud. Se não for especificado, é usado o projeto predefinido. -
REGION
: qualquer nome da região do conjunto de dados. Por exemplo,`region-us`
.
Exemplos
Esta secção apresenta exemplos de consultas da vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS
.
Exemplo: liste todos os conjuntos de dados replicados numa região
O exemplo seguinte apresenta todos os conjuntos de dados replicados na região US
:
SELECT * FROM `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS;
O resultado é 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: liste os conjuntos de dados replicados e a réplica principal de cada um
O exemplo seguinte apresenta todos os conjuntos de dados replicados e a respetiva réplica principal 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 é 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: liste os conjuntos de dados replicados e os respetivos estados de réplica
O exemplo seguinte apresenta todos os conjuntos de dados replicados e os respetivos 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 é semelhante ao seguinte:
+---------------------+-------------+--------------+---------------+ | catalog_name | schema_name | replica_name | replica_state | +---------------------+-------------+--------------+---------------+ | myproject | my_schema1 | us-east4 | PRIMARY | | myproject | my_schema1 | my_replica | SECONDARY | +---------------------+-------------+--------------+---------------+
Exemplo: liste quando cada réplica foi criada e se o preenchimento inicial está concluído
O exemplo seguinte lista todas as réplicas e quando foram criadas. Quando é criada uma réplica secundária, os respetivos dados 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 é 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: mostra a hora sincronizada mais recente
O exemplo seguinte mostra a data/hora mais recente em que a réplica secundária alcançou a réplica principal.
Tem de executar esta consulta na região que contém a réplica secundária. Algumas tabelas no conjunto de dados podem estar à frente da hora de replicação comunicada.
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 é 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 réplica principal.