CREATE REPLICATION GROUP

CREATE REPLICATION GROUP

시스템에서 지정된 객체의 새 복제 그룹(replication group)을 만드는 명령이에요. 복제 그룹은 소스 계정에서 대상 계정으로 객체를 복제하기 위한 객체 그룹이에요.

출처: 문서

본문

이 명령은 다음에 사용할 수 있어요:

  • 소스 계정에 복제 그룹을 만들어 동일한 조직 내 대상 계정으로 지정된 객체를 복제.
  • 대상 계정에 소스 계정의 기본 복제 그룹의 복제본(replica)인 보조 복제 그룹(secondary replication group)을 생성.

구문 (Syntax)

CREATE REPLICATION GROUP [ IF NOT EXISTS ] <name>
    OBJECT_TYPES = <object_type> [ , <object_type> , ... ]
    [ ALLOWED_DATABASES = <db_name> [ , <db_name> , ... ] ]
    [ ALLOWED_EXTERNAL_VOLUMES = <external_volume_name> [ , <external_volume_name> , ... ] ]
    [ ALLOWED_SHARES = <share_name> [ , <share_name> , ... ] ]
    [ ALLOWED_INTEGRATION_TYPES = <integration_type_name> [ , <integration_type_name> , ... ] ]
    ALLOWED_ACCOUNTS = <org_name>.<target_account_name> [ , <org_name>.<target_account_name> , ... ]
    [ IGNORE EDITION CHECK ]
    [ REPLICATION_SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }' ]
    [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
    [ ERROR_INTEGRATION = <integration_name> ]

보조 복제 그룹 (Secondary Replication Group)

CREATE REPLICATION GROUP [ IF NOT EXISTS ] <secondary_name>
    AS REPLICA OF <org_name>.<source_account_name>.<name>

매개변수

  • <name>: 복제 그룹의 식별자를 지정해요. 기본 문자로 시작해야 하며, 큰따옴표로 감싸지 않는 한 공백이나 특수 문자를 포함할 수 없어요.

  • OBJECT_TYPES = object_type [ , object_type , ... ]: 소스 계정에서 대상 계정으로 복제를 활성화하는 객체 유형을 지정해요. 지원되는 객체 유형:

    • ACCOUNT PARAMETERS: Business Critical Edition(이상) 필요. 모든 계정 수준 매개변수.
    • DATABASES: 객체 유형 목록에 데이터베이스를 추가. 포함하면 ALLOWED_DATABASES 매개변수를 설정해야 해요.
    • EXTERNAL VOLUMES: 외부 볼륨을 추가. 포함하면 ALLOWED_EXTERNAL_VOLUMES를 설정해야 해요.
    • INTEGRATIONS: Business Critical Edition(이상) 필요. 현재 보안, API, 저장소, 외부 접근, 일부 유형의 알림 인티그레이션이 지원돼요. 포함하면 ALLOWED_INTEGRATION_TYPES를 설정해야 해요.
    • NETWORK POLICIES: Business Critical Edition(이상) 필요. 소스 계정의 모든 네트워크 폴리시.
    • RESOURCE MONITORS: Business Critical Edition(이상) 필요. 소스 계정의 모든 리소스 모니터.
    • ROLES: Business Critical Edition(이상) 필요. 소스 계정의 모든 역할. 복제 그룹에 포함된 객체 유형에 대한 모든 권한 부여를 암시적으로 포함해요.
    • SHARES: 공유 객체를 추가. 포함하면 ALLOWED_SHARES를 설정해야 해요.
    • USERS: Business Critical Edition(이상) 필요. 소스 계정의 모든 사용자.
    • WAREHOUSES: Business Critical Edition(이상) 필요. 소스 계정의 모든 웨어하우스.

    사용자와 역할을 복제하면 사용자의 프로그래매틱 접근 토큰이 자동으로 복제돼요.

  • ALLOWED_DATABASES = db_name [ , db_name , ... ]: 복제를 활성화하는 데이터베이스 목록을 지정해요. 설정하려면 OBJECT_TYPES 목록에 DATABASES가 포함되어야 해요.

  • ALLOWED_EXTERNAL_VOLUMES = external_volume_name [ , ... ]: 복제를 활성화하는 외부 볼륨 목록을 지정해요. (Preview) OBJECT_TYPES 목록에 EXTERNAL VOLUMES가 포함되어야 해요.

  • ALLOWED_SHARES = share_name [ , ... ]: 복제를 활성화하는 공유 목록을 지정해요. OBJECT_TYPES 목록에 SHARES가 포함되어야 해요.

  • ALLOWED_INTEGRATION_TYPES = integration_type_name [ , ... ]: Business Critical Edition(이상) 필요. 복제를 활성화하는 인티그레이션 유형을 지정해요. OBJECT_TYPES 목록에 INTEGRATIONS가 포함되어야 해요. 지원 유형:

    • SECURITY INTEGRATIONS: OBJECT_TYPES 목록에 ROLES가 포함되어야 해요.
    • API INTEGRATIONS: 복제 후 추가 설정이 필요해요.
    • STORAGE INTEGRATIONS
    • EXTERNAL ACCESS INTEGRATIONS
    • NOTIFICATION INTEGRATIONS: 일부 유형만 복제돼요.
  • ALLOWED_ACCOUNTS = org_name.target_account_name [ , ... ]: 복제를 활성화하는 대상 계정 목록을 지정해요. org_name은 Snowflake 조직 이름, target_account_name은 대상 계정 이름이에요.

  • IGNORE EDITION CHECK: 다음 두 시나리오 중 하나에서 더 낮은 에디션의 계정으로 객체 복제를 허용해요:

    • Business Critical(이상) 계정에 데이터베이스 및/또는 공유 객체만 있는 기본 복제 그룹이 있고, 복제가 승인된 하나 이상의 계정이 더 낮은 에디션인 경우.
    • Business Critical(이상) 계정에 어떤 객체 유형의 기본 복제 그룹이 있고, HIPAA/HITRUST 규정에 따라 계정에 PHI 데이터를 저장하는 서면 업무 협약(business associate agreement)이 있는 경우.

    두 시나리오 모두 기본적으로 금지돼 있어, Business Critical(이상) 계정의 계정 관리자가 민감한 데이터를 더 낮은 에디션 계정으로 실수로 복제하는 것을 방지해요.

  • REPLICATION_SCHEDULE ...: 보조 복제 그룹을 새로 고치는 일정을 지정해요.

    • USING CRON expr time_zone: cron 표현식과 시간대를 지정해요. 표준 cron 구문의 부분집합을 지원해요.
    # __________ minute (0-59)
    # | ________ hour (0-23)
    # | | ______ day of month (1-31, or L)
    # | | | ____ month (1-12, JAN-DEC)
    # | | | | __ day of week (0-6, SUN-SAT, or L)
    # | | | | |
      * * * * *
    

    특수 문자: *(와일드카드), L(“last”, 일-월 필드에서 “그 달의 마지막 금요일” 5L, 일-of-월 필드에서 그 달의 마지막 일), /n(주어진 시간 단위의 n번째 인스턴스).

    cron 표현식은 지정된 시간대에 대해서만 평가돼요. 계정의 TIMEZONE 매개변수 값을 변경해도 새로 고침 시간대는 바뀌지 않아요. 일-of-월과 일-of-주 둘 다 지정하면 둘 중 하나를 만족하는 날에 새로 고침이 예약돼요.

    • num MINUTE: 새로 고침 사이의 대기 시간(분) 간격을 지정해요. 양의 정수만 허용하며 num M 구문도 지원해요. 최대 지원 값은 11520(8일)이에요. 기본 간격 시간은 객체 생성 시 또는 다른 간격을 설정할 때 현재 시계 시간에서 간격 카운터를 시작해요.
  • TAG ( tag_name = 'tag_value' [ , ... ] ): 태그 이름과 태그 문자열 값을 지정해요. 태그 값은 항상 문자열이고 최대 256자예요.

  • ERROR_INTEGRATION = integration_name: 복제 그룹에 새로 고침 오류가 발생할 때 이메일/푸시 알림을 보내는 데 사용할 알림 인티그레이션 이름을 지정해요.

보조 복제 그룹 매개변수

  • <secondary_name>: 보조 복제 그룹의 식별자를 지정해요. 보조(secondary_name)와 기본(name) 복제 그룹의 식별자는 같을 수도 있고 달라도 되요.
  • AS REPLICA OF org_name.source_account_name.name: 보조 복제 그룹을 만들 기본 복제 그룹의 식별자를 지정해요. org_name은 조직 이름, source_account_name은 소스 계정, name은 소스 계정의 기본 복제 그룹 식별자예요.

접근 제어 요구 사항

이 작업을 실행하려면 역할에 최소한 다음 권한이 필요해요:

권한 객체 참고
CREATE REPLICATION GROUP 계정 기본적으로 ACCOUNTADMIN 역할만 이 권한을 가져요.
MONITOR 데이터베이스 복제 그룹에 데이터베이스를 추가하려면 활성 역할이 데이터베이스에 MONITOR 권한을 가져야 해요.
USAGE 외부 볼륨 복제 그룹에 외부 볼륨을 추가하려면 USAGE 권한 필요.
OWNERSHIP 공유 복제 그룹에 공유를 추가하려면 OWNERSHIP 권한 필요.

사용법 참고 사항

  • 계정의 장애 조치 그룹(failover group)과 복제 그룹 식별자는 고유해야 해요.
  • 데이터베이스는 하나의 복제/장애 조치 그룹에만 추가할 수 있어요.
  • 외부 볼륨은 하나의 복제/장애 조치 그룹에만 추가할 수 있어요.
  • 인바운드 공유(프로바이더의 공유)는 복제/장애 조치 그룹에 추가할 수 없어요.
  • 조직에서 복제가 활성화된 계정 집합을 검색하려면 SHOW REPLICATION ACCOUNTS를 사용하세요.
  • 조직의 복제/장애 조치 그룹 목록을 검색하려면 SHOW REPLICATION GROUPS를 사용하세요.
  • 복제 동안 드롭하고 싶지 않은 대상 계정의 계정 객체(예: 사용자, 역할)가 있으면 SYSTEM$LINK_ACCOUNT_OBJECTS_BY_NAME 시스템 함수를 사용해 복제 수단이 아닌 다른 방법으로 생성된 객체에 전역 식별자를 적용하세요.
  • 자동 예약된 새로 고침 작업은 그룹에 OWNERSHIP 권한이 있는 역할로 실행돼요.
  • 태그 상속(inheritance)은 복제/장애 조치 그룹에 지정한 객체에 적용되지 않아요. 보조 복제/장애 조치 그룹은 읽기 전용이므로 태그를 설정/수정할 수 없어요.
  • 보조 복제/장애 조치 그룹을 새로 고칠 때 기본 그룹에 설정된 태그가 보조 그룹에도 설정돼요.

예제 (Examples)

단일 데이터베이스 복제

소스 계정에서 실행: 소스 계정에 myrg라는 복제 그룹을 만들어 데이터베이스 db1myaccount2 계정으로 복제하고, 10분마다 새로 고치도록 설정해요.

CREATE REPLICATION GROUP myrg
    OBJECT_TYPES = DATABASES
    ALLOWED_DATABASES = db1
    ALLOWED_ACCOUNTS = myorg.myaccount2
    REPLICATION_SCHEDULE = '10 MINUTE';

대상 계정에서 실행: 대상 계정에 소스 계정의 복제 그룹 myrg의 복제본인 복제 그룹을 만들어요.

CREATE REPLICATION GROUP myrg
    AS REPLICA OF myorg.myaccount1.myrg;

데이터베이스와 공유 객체 복제

소스 계정에서 실행: 소스 계정에 myrg라는 복제 그룹을 만들어 데이터베이스 db1과 공유 s1myaccount2 계정으로 복제하고, 10분마다 자동 새로 고치도록 설정해요.

CREATE REPLICATION GROUP myrg
    OBJECT_TYPES = DATABASES, SHARES
    ALLOWED_DATABASES = db1
    ALLOWED_SHARES = s1
    ALLOWED_ACCOUNTS = myorg.myaccount2
    REPLICATION_SCHEDULE = '10 MINUTE';

대상 계정에서 실행:

CREATE REPLICATION GROUP myrg
    AS REPLICA OF myorg.myaccount1.myrg;

계정 객체 복제

여러 데이터베이스 및 계정 객체 복제의 예는 CREATE FAILOVER GROUP의 예제를 참조하세요.

더 알아보기 (Learn more)