SCHEMATA_REPLICAS 视图
INFORMATION_SCHEMA.SCHEMATA_REPLICAS
视图包含有关架构副本的信息。
所需角色
如需获得查询 INFORMATION_SCHEMA.SCHEMATA_REPLICAS
视图所需的权限,请让管理员向您授予项目的 BigQuery Metadata Viewer (roles/bigquery.dataViewer
) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
架构
INFORMATION_SCHEMA.SCHEMATA_REPLICAS
视图包含有关数据集副本的信息。INFORMATION_SCHEMA.SCHEMATA_REPLICAS
视图具有如下架构:列 | 类型 | 说明 |
---|---|---|
catalog_name |
STRING |
该数据集所属项目的项目 ID。 |
schema_name |
STRING |
数据集的数据集 ID。 |
replica_name |
STRING |
副本的名称。 |
location |
STRING |
在其中创建副本的单区域或多区域。 |
replica_primary_assigned |
BOOL |
如果值为 TRUE ,则副本具有主要分配。 |
replica_primary_assignment_complete |
BOOL |
如果值为 TRUE ,则表示主要分配完成。
如果值为 FALSE ,则副本不是(或者尚且不是)主要副本,即使 replica_primary_assigned 等于 TRUE 也不例外。 |
creation_time |
TIMESTAMP |
副本的创建时间。首次创建副本时,除非 creation_complete 等于 TRUE ,否则它不会与主要副本完全同步。creation_time 的值在 creation_complete 等于 TRUE 之前设置。 |
creation_complete |
BOOL |
如果值为 TRUE ,则表示主要副本到辅助副本的初始完全同步已完成。 |
replication_time |
TIMESTAMP |
副本中的某些表可能早于此时间戳。此值仅在次要区域可见。 如果数据集包含具有流式数据的表,则 |
sync_status |
JSON |
主副本和辅助副本之间的同步状态。如果副本是主副本,则返回 NULL 。 |
范围和语法
针对此视图的查询必须包含区域限定符。下表说明了此视图的区域范围:
视图名称 | 资源范围 | 区域范围 |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS[_BY_PROJECT] |
项目级 | REGION |
可选:PROJECT_ID
:您的 Google Cloud 项目的 ID。如果未指定,则使用默认项目。
REGION
:任何数据集区域名称。例如 `region-us`
。
示例
本部分列出了 INFORMATION_SCHEMA.SCHEMATA_REPLICAS
视图的示例查询。
示例:列出一个区域中所有复制的数据集
以下示例列出了 US
区域中所有复制的数据集:
SELECT * FROM `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS;
结果类似于以下内容:
+---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+ | 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 | +---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+
示例:列出复制的数据集以及每个数据集的主要副本
以下示例列出了 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;
结果类似于以下内容:
+---------------------+-------------+----------------------+--------------------------+------------+ | 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 | +---------------------+-------------+----------------------+--------------------------+------------+
示例:列出复制的数据集及其副本状态
以下示例列出了所有复制的数据集及其副本状态:
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;
结果类似于以下内容:
+---------------------+-------------+--------------+---------------+ | catalog_name | schema_name | replica_name | replica_state | +---------------------+-------------+--------------+---------------+ | myproject | my_schema1 | us-east4 | PRIMARY | | myproject | my_schema1 | my_replica | SECONDARY | +---------------------+-------------+--------------+---------------+
示例:列出每个副本的创建时间以及初始回填是否已完成
以下示例列出了所有副本及其创建时间。创建辅助副本时,在 creation_complete
等于 TRUE
之前,辅助副本的数据不会完全与主要副本同步。
SELECT catalog_name, schema_name, replica_name, creation_time AS creation_time, FROM `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS WHERE creation_complete = TRUE;
结果类似于以下内容:
+---------------------+-------------+--------------+---------------------+ | 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 | +---------------------+-------------+--------------+---------------------+
示例:显示最近同步的时间
以下示例显示了辅助副本与主要副本同步的最新时间戳。
您必须在包含辅助副本的区域中运行此查询。数据集中的某些表可能早于报告的复制时间。
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
结果类似于以下内容:
+---------------------+-------------+--------------+-----+-----+-------------------------------------------+ | 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 | +---------------------+-------------+--------------+-----+-----+-------------------------------------------+
值 NULL
表示辅助副本从未完全同步到主要副本。