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 값이 정확하지 않습니다.

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