SCHEMATA_REPLICAS 뷰

INFORMATION_SCHEMA.SCHEMATA_REPLICAS 뷰에는 스키마 복제본에 대한 정보가 포함됩니다.

필요한 역할

INFORMATION_SCHEMA.SCHEMATA_REPLICAS 뷰를 쿼리하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 BigQuery 데이터 뷰어(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_assignedTRUE와 동일하더라도 복제본이 기본 복제본이 (아직) 아닙니다.
creation_time TIMESTAMP 복제본 생성 시간입니다. 복제본이 처음 생성될 때는 creation_completeTRUE가 될 때까지 기본 복제본과 완전히 동기화되지 않습니다. creation_time 값은 creation_completeTRUE가 되기 전에 설정됩니다.
creation_complete BOOL 값이 TRUE이면 보조 복제본에 대한 기본 복제본의 초기 전체 동기화가 완료된 것입니다.
replication_time TIMESTAMP

replication_time 값은 데이터 세트의 비활성 상태를 나타냅니다.

복제본의 일부 테이블이 이 타임스탬프보다 이전일 수 있습니다. 이 값은 보조 리전에서만 표시됩니다.

데이터 세트에 스트리밍 데이터가 있는 테이블이 포함된 경우 replication_time 값이 정확하지 않습니다.

범위 및 구문

이 뷰에 대한 쿼리에는 리전 한정자가 있어야 합니다. 다음 표에는 이 뷰의 리전 범위가 나와 있습니다.

뷰 이름 리소스 범위 리전 범위
[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_completeTRUE가 될 때까지 데이터가 기본 복제본과 완전히 동기화되지 않습니다.

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,
 replication_time AS secondary_replica_fully_synced_as_of_time,
FROM
 `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS

결과는 다음과 비슷합니다.

+---------------------+-------------+--------------+-------------------------------------------+
|    catalog_name     | schema_name | replica_name | secondary_replica_fully_synced_as_of_time |
+---------------------+-------------+--------------+-------------------------------------------+
| myproject           | my_schema1  | us-east4     |                                      NULL |
| myproject           | my_schema2  | us           |                                      NULL |
| myproject           | my_schema1  | my_replica   |                       2023-06-15 00:28:49 |
| myproject           | my_schema2  | my_replica2  |                       2023-06-15 00:29:20 |
+---------------------+-------------+--------------+-------------------------------------------+

NULL 값은 보조 복제본이 기본 복제본에 완전히 동기화되지 않았음을 나타냅니다.