CREATE BACKUP POLICY
CREATE BACKUP POLICY
백업(backup) 정책을 만드는 명령이에요. 정책을 하나 이상의 백업 세트와 연결해요. 정책의 설정은 그 정책을 사용하는 각 백업 세트의 스케줄과 만료 기간을 정의해요.
출처: 문서
본문
스케줄은 Snowflake가 얼마나 자주 백업을 자동으로 만들고 결과 백업을 정책이 관리하는 백업 세트에 추가하는지를 결정해요. 만료 기간은 Snowflake가 연결된 백업 세트에서 각 백업을 자동으로 삭제하기 전에 보존하는 기간을 결정해요.
이 명령은 다음 변형을 지원해요:
- CREATE OR ALTER BACKUP POLICY: 백업 정책이 없으면 만들고, 있으면 기존 백업 정책을 수정해요.
팁
백업 정책은 백업 세트에 선택사항이에요. 예약된 백업, 보존 잠금, 만료 기간이 필요 없다면 백업 정책 없이 백업 세트를 만들 수 있어요. 나중에 ALTER BACKUP SET을 사용해 기존 백업 세트에 백업 정책을 적용하거나, 백업 정책에 지정된 예약 백업을 중단·재개할 수도 있어요.
관련 명령: ALTER BACKUP POLICY, DROP BACKUP POLICY, SHOW BACKUP POLICIES, CREATE BACKUP SET, ALTER BACKUP SET, CREATE OR ALTER
구문 (Syntax)
CREATE [ OR REPLACE ] BACKUP POLICY [ IF NOT EXISTS ] <name>
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ WITH RETENTION LOCK ]
[ SCHEDULE = '{ <num> MINUTE | <num> HOUR | USING CRON <expr> <time_zone> }' ]
[ EXPIRE_AFTER_DAYS = <days_integer> ]
[ COMMENT = <string> ]
변형 구문 (Variant syntax)
CREATE OR ALTER BACKUP POLICY
백업 정책이 없으면 새로 만들고, 있으면 기존 백업 정책을 문에 정의된 백업 정책으로 변환해요. CREATE OR ALTER BACKUP POLICY 문은 CREATE BACKUP POLICY 문의 구문 규칙을 따르고 ALTER BACKUP POLICY 문과 같은 제한이 있어요.
백업 정책을 수정할 때 지원되는 변경은 다음과 같아요:
-
SCHEDULE또는EXPIRE_AFTER_DAYS업데이트. -
COMMENT추가, 업데이트, 제거.
CREATE OR ALTER BACKUP POLICY <name>
[ WITH RETENTION LOCK ]
[ SCHEDULE = '{ <num> MINUTE | <num> HOUR | USING CRON <expr> <time_zone> }' ]
[ EXPIRE_AFTER_DAYS = <days_integer> ]
[ COMMENT = <string> ]
필수 파라미터 (Required parameters)
*name*
백업 정책의 식별자예요. 계정 내에서 고유해야 해요.
식별자는 영문자로 시작해야 하고, 전체 식별자 문자열을 큰따옴표로 감싸지 않는 한 공백이나 특수 문자를 포함할 수 없어요(예: "My object"). 큰따옴표로 감싼 식별자는 대소문자를 구분해요.
자세한 내용은 Identifier requirements를 참고하세요.
선택 파라미터 (Optional parameters)
OR REPLACE
이 이름의 백업 정책이 이미 있으면 삭제하고 새로 만들어요. 이 절은 IF NOT EXISTS와 상호 배타적이에요.
IF NOT EXISTS
같은 이름의 백업 정책이 없을 때만 백업 정책을 만들어요. 백업 정책이 이미 있으면 명령은 효과가 없더라도 성공 메시지를 반환해요. 이 절은 OR REPLACE와 상호 배타적이에요.
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
태그(tag) 이름과 태그 문자열 값을 지정해요.
태그 값은 항상 문자열이고 태그 값의 최대 문자 수는 256이에요.
문에서 태그를 지정하는 방법에 대한 정보는 Tag quotas를 참고하세요.
WITH RETENTION LOCK
백업의 필수 보존 기간을 지정해요. 보존 잠금이 있는 백업은 권한 있는 사용자라도 삭제할 수 없어요. 자세한 내용은 restrictions for a backup with a retention lock을 참고하세요.
참고
APPLY BACKUP RETENTION LOCK 권한이 있는 사용자만 보존 잠금이 있는 백업 정책을 만들 수 있어요.
중요
보존 잠금이 있는 백업 정책을 백업 세트에 적용하는 것은 되돌릴 수 없어요(irreversible). 규제 준수에 필요한 강력한 보장 때문에 백업 세트에 보존 잠금을 설정한 뒤에는 잠금을 해제할 수 없어요. Snowflake 지원팀도 그런 보존 잠금을 해제할 수 없어요. 삭제할 수 없는 백업 세트와 이를 포함한 스키마·데이터베이스에 대해 예상치 못한 스토리지 요금이 발생하지 않도록, 만료 기간이 긴 백업 세트에 보존 잠금을 설정하기 전에 신중히 계획하세요.
Snowflake 조직이 삭제되면 그 조직은 더 이상 Snowflake 고객이 아니에요. 이 경우 Snowflake는 보존 잠금이 있는 백업을 포함한 모든 백업을 삭제해요. Snowflake 조직 삭제는 Snowflake 지원팀의 개입이 필요해요. 관리자가 실수로 할 수 있는 일이 아니에요.
SCHEDULE = '{ *num* MINUTE | *num* HOUR | USING CRON *expr* *time_zone* }'
객체의 백업을 만드는 스케줄을 지정해요.
참고
백업의 최소 스케줄은 60분 또는 1시간이어야 해요.
각 백업 정책은 스케줄과 만료 기간 속성 중 하나 또는 둘 다를 가져야 해요. 자세한 내용은 Backup policy를 참고하세요.
USING CRON *expr* *time_zone*
객체의 백업이 만들어지는 시점에 대한 cron 표현식과 시간대를 지정해요. 표준 cron 유틸리티 구문의 하위 집합을 지원해요.
시간대 목록은 tz database time zones 목록(Wikipedia)을 참고하세요.
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)"을 나타내요. 요일(day-of-week) 필드에서 사용하면 주어진 달의 "마지막 금요일"("5L") 같은 구문을 지정할 수 있게 해요. 월중일(day-of-month) 필드에서는 달의 마지막 날을 지정해요.
/*n*
주어진 시간 단위의 n번째 인스턴스를 나타내요. 각 시간 단위는 독립적으로 계산돼요. 예를 들어 월 필드에 4/3을 지정하면 백업은 4월, 7월, 10월(즉 연도의 4번째 달부터 3개월마다)로 예약돼요. 이후 연도에도 같은 스케줄이 유지돼요. 즉 백업은 (10월 실행 3개월 후인) 1월에 실행되도록 예약되지 않아요.
참고
-
cron 표현식은 현재 지정된 시간대에 대해서만 평가돼요. 계정의 TIMEZONE 파라미터 값을 변경하거나 사용자·세션 수준에서 값을 설정해도 백업의 시간대는 바뀌지 않아요.
-
cron 표현식은 백업의 모든 유효 실행 시간을 정의해요. Snowflake는 이 스케줄에 따라 백업 생성을 시도하지만, 이전 실행이 다음 유효 실행 시간이 시작되기 전에 완료되지 않으면 해당 유효 실행 시간은 건너뛰어져요.
-
cron 표현식에 특정 월중일과 요일이 모두 포함되면 백업은 월중일 또는 요일 중 하나를 만족하는 날에 예약돼요. 예를 들어
SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC'는 매달 10일~20일의 자정(0AM)과 그 날짜 밖의 화요일·목요일에도 백업을 예약해요.
*num* MINUTE 또는 *num* MINUTES
백업 사이의 대기 간격(분)을 지정해요. 양의 정수만 허용해요.
*num* M 구문도 지원해요.
*num* HOUR 또는 *num* HOURS
백업 사이의 대기 간격(시간)을 지정해요. 양의 정수만 허용해요.
*num* H 구문도 지원해요.
모호성을 피하기 위해 다음 상황에서 *기준 간격 시간(base interval time)*이 설정돼요:
-
객체가 만들어질 때(CREATE BACKUP SET … WITH BACKUP POLICY 사용).
-
다른 간격이 설정될 때(ALTER BACKUP SET … APPLY BACKUP POLICY 또는 ALTER BACKUP POLICY … SET SCHEDULE 사용).
기준 간격 시간은 현재 시계 시간부터 간격 카운터를 시작해요. 예를 들어 10 MINUTES의 INTERVAL 값을 설정하고 예약 백업이 오전 9:03에 활성화되면 다음 백업은 오전 9:13, 9:23 등에 만들어져요. 절대 정밀도를 보장하기 위해 최선을 다하지만, 백업이 설정된 간격 전에 실행되지 않는다는 것만 보장해요(즉 이 예에서 백업이 오전 9:14에 처음 실행될 수는 있지만 오전 9:12에는 절대 실행되지 않아요).
EXPIRE_AFTER_DAYS = *days_integer*
백업이 만료될 때까지의 일수를 지정해요. Snowflake는 만료된 백업을 자동으로 삭제해요. 이 파라미터를 지정하지 않으면 백업은 세트에서 수동으로 삭제될 때까지 백업 세트에 남아 있어요.
-
최소값:
1. -
최대값:
SCHEDULE절을 지정하지 않으면3653(약 10년)예요.
참고
각 백업 정책은 스케줄과 만료 기간 속성 중 하나 또는 둘 다를 가져야 해요. 자세한 내용은 Backup policy를 참고하세요.
COMMENT = '*string_literal*'
백업 정책에 대한 주석을 지정해요.
기본값: 값 없음
접근 제어 요구사항 (Access control requirements)
이 작업을 실행하는 역할은 최소한 다음 권한을 가져야 해요:
| Privilege | Notes |
|---|---|
| CREATE BACKUP POLICY | 백업 정책을 만드는 역할은 정책이 만들어진 스키마에 이 권한이 있어야 해요. |
| APPLY BACKUP RETENTION LOCK | 계정에 이 권한이 있는 사용자만 보존 잠금이 있는 백업 정책을 만들 수 있어요. |
| OWNERSHIP | 기존 백업 정책에 대한 문을 실행하려면 필요해요. |
사용 참고사항 (Usage notes)
-
Time Travel과 Failsafe 보존은 백업에 적용되지 않아요. 백업은 만료된 뒤에는 복구할 수 없어요.
-
메타데이터에 관해: 고객은 Snowflake 서비스를 사용할 때 메타데이터로 개인 데이터(User 객체 외), 민감 데이터, 수출 통제 데이터 또는 기타 규제 데이터를 입력하지 않도록 해야 해요. 자세한 내용은 Metadata fields in Snowflake를 참고하세요.
중요
백업 정책에 보존 잠금이 적용되어 있고 백업 세트에 만료되지 않은 백업이 있으면 백업 세트를 삭제할 수 없어요. 그 경우 세트의 모든 백업이 만료될 때까지 기다려야 해요. 이 제한은 ACCOUNTADMIN 같은 권한 있는 역할과 Snowflake 지원팀에도 적용돼요. 그 때문에 백업 정책에 보존 잠금과 긴 만료 기간을 지정할 때는 주의하세요.
CREATE OR ALTER BACKUP POLICY
-
ALTER BACKUP POLICY 명령의 모든 제한이 적용돼요.
-
태그 설정 또는 해제는 지원되지 않아요.
-
기존 백업 정책에서
WITH RETENTION LOCK절은 바꿀 수 없어요.
예제 (Examples)
매시간 백업을 만들고 90일 후 만료하는 백업 정책을 만드는 예제예요:
CREATE BACKUP POLICY hourly_backup_policy
SCHEDULE = '60 MINUTE'
EXPIRE_AFTER_DAYS = 90
COMMENT = 'Hourly backups that expire after 90 days';
24시간마다 백업을 만들고 90일 후 만료하는 보존 잠금이 있는 백업 정책을 만드는 예제예요. 이 백업 정책으로 만든 백업은 만료 기간이 끝나기 전에는 수정하거나 삭제할 수 없어요:
CREATE BACKUP POLICY daily_backup_policy_with_lock
WITH RETENTION LOCK
SCHEDULE = '1440 MINUTE'
EXPIRE_AFTER_DAYS = 90
COMMENT = 'regulatory backups expire after 90 days with retention lock';
스케줄에 cron 표현식을 사용하는 백업 정책을 만드는 예제예요. 다음 문은 매주 화요일·금요일 오후 11시에 백업을 만드는 정책을 만들어요:
CREATE BACKUP POLICY twice_weekly_backup_policy
SCHEDULE = 'USING CRON 0 23 * * 2,5 UTC'
EXPIRE_AFTER_DAYS = 7
COMMENT = 'Twice-weekly backups that expire after 7 days';
CREATE OR ALTER BACKUP POLICY
새 백업 정책을 만들거나 기존 정책의 스케줄과 만료 기간을 업데이트하는 예제예요:
CREATE OR ALTER BACKUP POLICY hourly_backup_policy
SCHEDULE = '60 MINUTE'
EXPIRE_AFTER_DAYS = 90
COMMENT = 'Hourly backups that expire after 90 days';
더 알아보기 (Learn more)
ALTER BACKUP POLICY, DROP BACKUP POLICY, SHOW BACKUP POLICIES, CREATE BACKUP SET, ALTER BACKUP SET, CREATE OR ALTER