여러 계정에 걸친 데이터베이스 복제 소개
여러 계정에 걸친 데이터베이스 복제 소개
이 기능은 Snowflake 계정(같은 조직 안) 사이에서 데이터베이스를 복제하고 데이터베이스 객체와 저장된 데이터를 동기화 상태로 유지할 수 있게 해줘요. 데이터베이스 복제는 리전과 클라우드 플랫폼을 넘어 지원돼요.
본문
중요: 이 섹션은 계정 복제(account replication) 기능과는 다른 제한된 데이터베이스 복제 기능을 설명해요. Snowflake는 데이터베이스를 복제하고 장애 조치하는 데 계정 복제 기능을 사용할 것을 강력히 권장해요.
기본 데이터베이스란 무엇인가요?
복제는 기존의 영구(permanent) 또는 트랜션트(transient) 데이터베이스에 대해 활성화할 수 있어요. 복제를 활성화하면 그 데이터베이스가 기본(primary) 데이터베이스로 지정돼요. 계정 안의 어떤 수의 데이터베이스든 기본 데이터베이스로 지정할 수 있어요. 마찬가지로 기본 데이터베이스는 조직 안의 어떤 수의 계정으로든 복제할 수 있어요. 여기에는 각 대상 계정에서 지정된 기본 데이터베이스의 복제본으로 보조(secondary) 데이터베이스를 만드는 것이 포함돼요. 이 계정들은 일반적으로 다른 리전에 있거나, 같거나 다른 클라우드 플랫폼에 있거나, 소스 계정과 같은 리전에 있을 수 있어요.
모든 DML/DDL 연산은 기본 데이터베이스에서 실행돼요. 각 읽기 전용 보조 데이터베이스는 기본 데이터베이스의 스냅샷으로 주기적으로 새로 고칠 수 있으며, 모든 데이터와 데이터베이스 객체(즉 스키마, 테이블, 뷰 등)에 대한 DDL 연산을 복제해요.
데이터베이스 복제 개요
복제된 데이터베이스 객체의 전체 목록은 복제된 데이터베이스 객체를 참고해요.
계정 안의 다른 객체:
데이터베이스 복제는 데이터베이스에 대해서만 지원돼요. 계정 안의 다른 유형의 객체는 계정 복제로 복제할 수 있어요. 계정 복제에 지원되는 객체의 전체 목록은 복제된 객체를 참고해요.
접근 제어:
데이터베이스 객체에 부여된 권한은 보조 데이터베이스로 복제되지 않아요. 여기에는 기존 데이터베이스 객체에 대한 권한 부여와 미래 객체에 대한 권한 부여(즉 future grants)가 모두 포함돼요. 권한 부여는 계정 복제로 복제할 수 있어요.
파라미터:
계정 파라미터는 데이터베이스 복제로 복제되지 않아요. 계정 파라미터는 계정 복제로 복제할 수 있어요. 스키마나 스키마 객체 수준에서 설정된 객체 파라미터는 복제돼요.
| 파라미터 | 객체 |
|---|---|
DATA_RETENTION_TIME_IN_DAYS |
스키마, 테이블 |
DEFAULT_DDL_COLLATION |
스키마, 테이블 |
MAX_DATA_EXTENSION_TIME_IN_DAYS |
스키마, 테이블 |
PIPE_EXECUTION_PAUSED [1] |
스키마, 파이프 |
QUOTED_IDENTIFIERS_IGNORE_CASE |
스키마, 테이블 |
파라미터 복제는 데이터베이스 안의 객체(스키마, 테이블)에만 적용되며, CREATE <object> <parameter> 또는 ALTER <object> … SET <parameter>로 파라미터가 명시적으로 설정된 경우에만 적용돼요. 데이터베이스 수준 파라미터는 복제되지 않아요. 기본 데이터베이스의 객체에 명시적으로 설정된 파라미터는 보조 데이터베이스의 객체에 설정된 파라미터를 덮어써요. 예를 들어 기본 데이터베이스의 스키마 s1에 DATA_RETENTION_TIME_IN_DAYS가 10으로 설정되어 있고 보조 데이터베이스가 데이터베이스 수준에서 DATA_RETENTION_TIME_IN_DAYS를 1로 설정했다면, 복제 후 보조 데이터베이스의 스키마 s1의 DATA_RETENTION_TIME_IN_DAYS는 10으로 설정돼요. 보조 데이터베이스의 데이터베이스 수준에서 명시적으로 설정된 파라미터는 덮어쓰지 않아요. 예를 들어 보조 데이터베이스 파라미터 DATA_RETENTION_TIME_IN_DAYS가 명시적으로 1로 설정되었고 기본 데이터베이스 파라미터가 명시적으로 10으로 설정되어 있다면, 복제 후에도 보조 데이터베이스의 DATA_RETENTION_TIME_IN_DAYS는 1로 유지돼요.
[1] PIPE 객체는 복제되지 않아요. 기본 데이터베이스의 스키마 수준에서 PIPE_EXECUTION_PAUSED 파라미터가 설정되어 있으면 보조 데이터베이스로 복제돼요. 장애 조치 시 보조 데이터베이스가 기본 데이터베이스로 승격되고 파이프가 만들어지면 그 파라미터 설정이 적용돼요.
하위 에디션의 계정으로 데이터베이스 복제
다음 조건 중 하나라도 참이라면, 로컬 데이터베이스가 기본 데이터베이스 역할을 하도록 승격될 때 Snowflake가 오류 메시지를 표시해요.
- 기본 데이터베이스가 Business Critical(이상) 계정에 있지만 복제가 승인된 계정 중 하나 이상이 하위 에디션에 있는 경우. Business Critical Edition은 극도로 민감한 데이터가 있는 Snowflake 계정을 위한 것이에요.
- 기본 데이터베이스가 Business Critical(이상) 계정에 있고 HIPAA와 HITRUST CSF 규정에 따라 계정에 PHI 데이터를 저장하기 위한 서명된 업무 제휴 계약(BAA)이 마련되어 있지만, 복제가 승인된 계정 중 하나 이상(그 계정들이 Business Critical 이상이든 아니든)에 대해 그러한 계약이 없는 경우.
이 동작은 Business Critical(이상) 계정의 계정 관리자가 실수로 민감한 데이터를 하위 에디션의 계정에 복제하지 않도록 돕기 위해 구현됐어요. 계정 관리자는 ALTER DATABASE … ENABLE REPLICATION TO ACCOUNTS 문을 실행할 때 IGNORE EDITION CHECK 절을 포함해 이 기본 동작을 재정의할 수 있어요. IGNORE EDITION CHECK가 설정되면 기본 데이터베이스는 어떤 Snowflake 에디션의 지정된 계정으로든 복제될 수 있어요.
데이터베이스 복제의 현재 제한 사항
- 셰어에서 만든 데이터베이스는 복제할 수 없어요.
- 기본 데이터베이스가 지원되지 않는 소스 객체가 있는 스트림을 포함하면 새로 고침 연산이 실패해요. 어떤 스트림의 소스 객체가 삭제된 경우에도 연산이 실패해요.
- 추가 전용(append-only) 스트림은 복제된 소스 객체에서 지원되지 않아요.
CREATE DATABASE … AS REPLICA명령은WITH TAG절을 지원하지 않아요. 보조 데이터베이스는 읽기 전용이라 이 절을 지원하지 않아요. 기본 데이터베이스가WITH TAG절을 지정하면 보조 데이터베이스를 만들기 전에 그 절을 제거해요. 데이터베이스에WITH TAG절이 있는지 확인하려면 Snowflake 계정에서GET_DDL함수를 호출하고 함수 인자에 기본 데이터베이스를 지정해요. 데이터베이스에 태그가 설정되어 있으면 함수 출력에ALTER DATABASE … SET TAG문이 포함돼요.- 스테이지와 파이프 복제는 지원되지 않아요. 스테이지와 파이프는 계정 복제로 복제할 수 있어요.
- 시크릿(secrets)은 지원되지 않아요. 시크릿은 복제 또는 장애 조치 그룹으로 복제할 수 있어요.