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을 반환합니다. |
replica_primary_assignment_time |
TIMESTAMP |
기본에서 복제본으로의 전환이 트리거된 시간입니다. |
replica_primary_assignment_completion_time |
TIMESTAMP |
기본에서 복제본으로의 전환이 완료된 시간입니다. |
안정성을 위해 와일드 카드(SELECT *)를 사용하는 대신 정보 스키마 쿼리에 열을 명시적으로 나열하는 것이 좋습니다. 열을 명시적으로 나열하면 기본 스키마가 변경될 때 쿼리가 중단되지 않습니다.
범위 및 구문
이 뷰에 대한 쿼리에는 리전 한정자가 있어야 합니다. 다음 표에는 이 뷰의 리전 범위가 나와 있습니다.
| 뷰 이름 | 리소스 범위 | 리전 범위 |
|---|---|---|
[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 값은 보조 복제본이 기본 복제본에 완전히 동기화되지 않았음을 나타냅니다.