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: 일부 유형만 복제돼요.
- SECURITY 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라는 복제 그룹을 만들어 데이터베이스 db1을 myaccount2 계정으로 복제하고, 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과 공유 s1을 myaccount2 계정으로 복제하고, 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)
- ALTER REPLICATION GROUP
- DROP REPLICATION GROUP
- SHOW REPLICATION GROUPS
- CREATE FAILOVER GROUP
- 여러 계정 간 복제 및 장애 조치 소개