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_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
값은 보조 복제본이 기본 복제본에 완전히 동기화되지 않았음을 나타냅니다.