CREATE BACKUP SET
CREATE BACKUP SET
테이블, 스키마 또는 데이터베이스용 백업(backup) 세트를 만드는 명령이에요. 백업 세트가 만들어지면 언제든지 ALTER BACKUP SET 명령을 실행해 백업 세트에 새 백업을 추가할 수 있어요. 백업 정책(backup policy)에 스케줄을 정의하고 그 백업 정책을 백업 세트와 연결했다면 Snowflake가 백업 세트에 백업을 자동으로 추가하기도 해요.
출처: 문서
본문
각 백업 세트는 특정 테이블, 특정 스키마의 객체, 특정 데이터베이스의 객체에 대한 백업 집합을 나타내요. 그래서 백업을 매우 세밀하게 또는 매우 포괄적으로 만들 수 있어요. 그리고 각 테이블, 스키마, 데이터베이스의 백업은 각각 독립적인 스케줄을 가질 수 있어요.
스키마 백업과 데이터베이스 백업에 포함되는 객체 종류는 Backup objects를 참고하세요.
이 명령은 다음 변형(variant)을 지원해요:
- CREATE OR ALTER BACKUP SET: 백업 세트가 없으면 만들고, 있으면 기존 백업 세트를 수정해요.
관련 명령: ALTER BACKUP SET, DROP BACKUP SET, SHOW BACKUP SETS, CREATE BACKUP POLICY, CREATE OR ALTER
구문 (Syntax)
CREATE [ OR REPLACE ] BACKUP SET [ IF NOT EXISTS ] <name>
FOR [ DYNAMIC ] TABLE <table_name>
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ WITH BACKUP POLICY <policy_name> ]
[ COMMENT = <string> ]
CREATE [ OR REPLACE ] BACKUP SET [ IF NOT EXISTS ] <name>
FOR SCHEMA <schema_name>
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ WITH BACKUP POLICY <policy_name> ]
[ COMMENT = <string> ]
CREATE [ OR REPLACE ] BACKUP SET [ IF NOT EXISTS ] <name>
FOR DATABASE <database_name>
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ WITH BACKUP POLICY <policy_name> ]
[ COMMENT = <string> ]
변형 구문 (Variant syntax)
CREATE OR ALTER BACKUP SET
백업 세트가 없으면 새로 만들고, 있으면 기존 백업 세트를 업데이트해요. CREATE OR ALTER BACKUP SET 문은 CREATE BACKUP SET 문의 구문 규칙을 따르고 ALTER BACKUP SET 문과 같은 제한이 있어요.
기존 백업 세트에는 COMMENT를 업데이트하고 아직 없으면 WITH BACKUP POLICY를 연결할 수 있어요. FOR 대상을 바꿀 수 없고, 연결된 백업 정책을 교체하거나 제거할 수 없어요.
CREATE OR ALTER BACKUP SET <name>
FOR [ DYNAMIC ] TABLE <table_name>
[ WITH BACKUP POLICY <policy_name> ]
[ COMMENT = <string> ]
CREATE OR ALTER BACKUP SET <name>
FOR SCHEMA <schema_name>
[ WITH BACKUP POLICY <policy_name> ]
[ COMMENT = <string> ]
CREATE OR ALTER BACKUP SET <name>
FOR DATABASE <database_name>
[ WITH BACKUP POLICY <policy_name> ]
[ COMMENT = <string> ]
필수 파라미터 (Required parameters)
*name*
백업 세트의 식별자예요. 계정 내에서 고유해야 해요.
식별자는 영문자로 시작해야 하고, 전체 식별자 문자열을 큰따옴표로 감싸지 않는 한 공백이나 특수 문자를 포함할 수 없어요(예: "My object"). 큰따옴표로 감싼 식별자는 대소문자를 구분해요.
자세한 내용은 Identifier requirements를 참고하세요.
FOR [ DYNAMIC ] TABLE *table_name*
테이블 또는 동적 테이블(dynamic table)의 이름을 지정해요. 이 경우 백업 세트는 단일 테이블의 백업을 나타내요.
FOR SCHEMA *schema_name*
스키마의 이름을 지정해요. 이 경우 백업 세트는 특정 스키마의 모든 테이블과 기타 객체의 백업을 나타내요.
FOR DATABASE *database_name*
데이터베이스의 이름을 지정해요. 이 경우 백업 세트는 특정 데이터베이스의 모든 테이블, 스키마 및 기타 객체의 백업을 나타내요.
선택 파라미터 (Optional parameters)
OR REPLACE
이 이름의 백업 세트가 이미 있으면 삭제하고 새로 만들어요. 보존 잠금(retention lock), 법적 보존(legal hold), 만료 시간에 대한 백업 정책 규칙 때문에 백업 세트를 삭제할 수 없으면 명령이 실패해요. 이 절은 IF NOT EXISTS와 상호 배타적이에요.
IF NOT EXISTS
같은 이름의 백업 세트가 없을 때만 백업 세트를 만들어요. 백업 세트가 이미 있으면 명령은 효과가 없더라도 성공 메시지를 반환해요. 이 절은 OR REPLACE와 상호 배타적이에요.
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
태그(tag) 이름과 태그 문자열 값을 지정해요.
태그 값은 항상 문자열이고 태그 값의 최대 문자 수는 256이에요.
문에서 태그를 지정하는 방법에 대한 정보는 Tag quotas를 참고하세요.
WITH BACKUP POLICY *policy_name*
세트의 백업 정책 이름을 지정해요. 백업 정책은 백업 스케줄, 각 백업의 보존 기간, 보존 기간이 끝나기 전에 백업이 제거되는 것을 방지할지 여부 등 백업 세트의 속성을 정의해요.
CREATE BACKUP SET 명령에서 이 파라미터를 생략하면 나중에 ALTER BACKUP SET 명령으로 정책을 적용할 수 있어요.
중요
보존 잠금이 있는 백업 정책을 백업 세트에 적용하는 것은 되돌릴 수 없어요(irreversible). 규제 준수에 필요한 강력한 보장 때문에 백업 세트에 보존 잠금을 설정한 뒤에는 잠금을 해제할 수 없어요. Snowflake 지원팀도 그런 보존 잠금을 해제할 수 없어요. 삭제할 수 없는 백업 세트와 이를 포함한 스키마·데이터베이스에 대해 예상치 못한 스토리지 요금이 발생하지 않도록, 만료 기간이 긴 백업 세트에 보존 잠금을 설정하기 전에 신중히 계획하세요.
Snowflake 조직이 삭제되면 그 조직은 더 이상 Snowflake 고객이 아니에요. 이 경우 Snowflake는 보존 잠금이 있는 백업을 포함한 모든 백업을 삭제해요. Snowflake 조직 삭제는 Snowflake 지원팀의 개입이 필요해요. 관리자가 실수로 할 수 있는 일이 아니에요.
COMMENT = '*string_literal*'
백업 세트에 대한 주석을 지정해요.
기본값: 값 없음
접근 제어 요구사항 (Access control requirements)
이 작업을 실행하는 역할은 최소한 다음 권한을 가져야 해요:
| Privilege | Notes |
|---|---|
| CREATE BACKUP SET | 백업 세트를 만드는 역할은 백업 세트가 만들어진 스키마에 이 권한이 부여되어 있어야 해요. 실제로 백업 세트를 만들려면 백업 세트 대상 객체에 대한 적절한 권한도 필요해요: 테이블 백업에는 SELECT, 스키마 백업 또는 데이터베이스 백업에는 USAGE. |
| SELECT | 테이블용 백업 세트를 만드는 역할은 해당 테이블에 SELECT 권한이 있어야 해요. |
| USAGE | 스키마 또는 데이터베이스용 백업 세트를 만드는 역할은 해당 스키마 또는 데이터베이스에 USAGE 권한이 있어야 해요. |
| APPLY | 백업 세트에 백업 정책을 적용하는 역할은 해당 백업 정책에 이 권한이 있어야 해요. |
| APPLY BACKUP RETENTION LOCK | 보존 잠금이 있는 백업 정책을 백업 세트에 적용하는 역할은 계정에 이 권한이 있어야 해요. |
| OWNERSHIP | 기존 백업 세트에 대한 문을 실행하려면 필요해요. |
이 권한들은 보조 역할이 아니라 현재 활성화된 주 역할(primary role)에 필요해요.
사용 참고사항 (Usage notes)
메타데이터에 관해: 고객은 Snowflake 서비스를 사용할 때 메타데이터로 개인 데이터(User 객체 외), 민감 데이터, 수출 통제 데이터 또는 기타 규제 데이터를 입력하지 않도록 해야 해요. 자세한 내용은 Metadata fields in Snowflake를 참고하세요.
중요
백업 정책에 보존 잠금이 적용되어 있고 백업 세트에 만료되지 않은 백업이 있으면 백업 세트를 삭제할 수 없어요. 그 경우 세트의 모든 백업이 만료될 때까지 기다려야 해요. 이 제한은 ACCOUNTADMIN 같은 권한 있는 역할과 Snowflake 지원팀에도 적용돼요. 그 때문에 백업 정책에 보존 잠금과 긴 만료 기간을 지정할 때는 주의하세요.
CREATE OR ALTER BACKUP SET
-
ALTER BACKUP SET 명령의 모든 제한이 적용돼요.
-
FOR대상을 바꿀 수 없어요. -
백업 세트에 아직 없으면 백업 정책을 연결할 수 있지만, 기존 백업 정책은 교체하거나 제거할 수 없어요.
-
태그는 지원되지 않아요.
예제 (Examples)
테이블 t1용 t1_backups 백업 세트를 만드는 예제예요:
CREATE BACKUP SET t1_backups
FOR TABLE t1;
테이블 t1용 백업 세트 t1_backups를 백업 정책과 함께 만드는 예제예요:
CREATE BACKUP SET t1_backups
FOR TABLE t1
WITH BACKUP POLICY hourly_backup_policy;
스키마 s1용 백업 세트 s1_backups를 백업 정책과 함께 만드는 예제예요:
CREATE BACKUP SET s1_backups
FOR SCHEMA s1
WITH BACKUP POLICY hourly_backup_policy;
데이터베이스 d1용 백업 세트 d1_backups를 백업 정책과 함께 만드는 예제예요:
CREATE BACKUP SET d1_backups
FOR DATABASE d1
WITH BACKUP POLICY hourly_backup_policy;
CREATE OR ALTER BACKUP SET
테이블 t1용 백업 세트를 만들거나, 이미 백업 정책 없이 존재한다면 주석을 업데이트하고 백업 정책을 연결하는 예제예요:
CREATE OR ALTER BACKUP SET t1_backups
FOR TABLE t1
WITH BACKUP POLICY hourly_backup_policy
COMMENT = 'Backups for t1';
더 알아보기 (Learn more)
ALTER BACKUP SET, DROP BACKUP SET, SHOW BACKUP SETS, CREATE BACKUP POLICY, CREATE OR ALTER