Snowflake Postgres 특정 시점 복구¶
개요¶
Snowflake Postgres는 특정 시점 복구(PITR)를 사용하여 인스턴스의 포크 생성을 지원합니다. 포크는 특정 시간에 기존 인스턴스의 상태를 반영하는 새 인스턴스입니다. 포크는 Snowflake에서의 CLONE 작업과 유사합니다. 그러나 CLONE 작업과 달리 포크는 모든 원본 데이터의 전체 복사를 수행합니다.
포크는 원본 인스턴스와 격리되어 있으므로, 포크(스키마 또는 데이터)에 대한 변경 사항은 원본 인스턴스에 영향을 주지 않습니다.
특정 시점 복구는 다음과 같은 경우에 유용합니다.
삭제된 테이블 또는 잘못된 데이터 업데이트와 같은 우발적인 변경 사항으로부터 복구.
디버깅 또는 감사를 위한 데이터의 과거 상태 검사.
원본 인스턴스에 영향을 주지 않고 프로덕션 데이터의 현실적인 복사본에 대해 애플리케이션 변경 사항 테스트.
포크는 지정된 시간 이전에 존재하는 원본 인스턴스의 가장 최근 기본 백업에서 생성됩니다. 원본 인스턴스의 미리 쓰기 로그(WAL) 레코드가 선택된 시점까지 재생되어, 포크된 인스턴스가 해당 시점에 원본 인스턴스와 트랜잭션 측면에서 일관성을 유지하도록 합니다.
포크에 복사되는 내용¶
포크를 생성하면 원본 인스턴스에서 다음 특성이 복사됩니다.
Postgres 버전. 바이너리 호환성을 위한 버전 복사.
고가용성 지정을 위한 설정(활성화 또는 비활성화).
인스턴스에 액세스하기 위한 자격 증명.
생성하는 동안 저장소 및 **인스턴스 크기(계획)**와 같은 새 인스턴스의 일부 속성을 사용자 지정할 수 있습니다. 포크의 가격은 다른 인스턴스와 마찬가지로 포크의 구성(계획, 저장소, 고가용성)을 기준으로 책정됩니다.
포크 생성¶
탐색 메뉴에서 Postgres 를 선택합니다.
포크할 인스턴스를 선택합니다.
Postgres Instance 페이지의 Manage`에서 :ui:`Fork 항목을 선택하고 구성 옵션을 입력합니다.
:ui:`Fork`를 선택하여 포크를 생성합니다.
원본 인스턴스의 포크로 Postgres 인스턴스를 생성하려면 다음 CREATE POSTGRES INSTANCE 명령을 실행하여 FORK 절을 지정합니다. 명령은 AT 또는 BEFORE 절로 지정된 시점에 원본 인스턴스에서 포크를 생성합니다. 이 절을 생략하는 경우 포크는 현재 시점의 원본 인스턴스를 기반으로 합니다.
CREATE POSTGRES INSTANCE <name>
FORK <orig_name>
[ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> } ) ]
[ COMPUTE_FAMILY = <compute_family> ]
[ STORAGE_SIZE_GB = <storage_gb> ]
[ HIGH_AVAILABILITY = { TRUE | FALSE } ]
[ POSTGRES_SETTINGS = '<json_string>' ]
[ COMMENT = '<string_literal>' ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , ... ] ) ]
명령 매개 변수의 경우:
FORK orig_name포크의 원본을 지정합니다.
{ AT | BEFORE } ( { TIMESTAMP => timestamp | OFFSET => time_difference } )포크할 시점을 지정합니다. 타임스탬프 또는 오프셋은 10일의 postgres 데이터 보존 시간 내에 있어야 합니다.
기본값: 현재 시간을 사용합니다.
AT | BEFORE 절은 다음 매개 변수 중 하나를 허용합니다.
TIMESTAMP => timestampTime Travel에 사용할 정확한 날짜와 시간을 지정합니다. 값은 명시적으로 TIMESTAMP, TIMESTAMP_LTZ, TIMESTAMP_NTZ 또는 TIMESTAMP_TZ 데이터 타입에 캐스팅되어야 합니다.
명시적인 캐스트를 지정하지 않으면 AT 절의 타임스탬프는 UTC 타임존(TIMESTAMP_NTZ와 동일)의 타임스탬프로 처리됩니다. 명시적 캐스트에 TIMESTAMP 데이터 타입을 사용하면 값이 TIMESTAMP_NTZ 값으로 처리될 수도 있습니다. 자세한 내용은 날짜 및 시간 데이터 타입 섹션을 참조하십시오.
OFFSET => time_differenceTime Travel에 사용할 현재 시간과의 초 단위 차이를
-N형식으로 지정합니다. 여기서N은 정수 또는 산술 식일 수 있습니다(예:-120은 120초,-30*60은 1800초 또는 30분).
기본값: 원본에서 복사됩니다.
COMPUTE_FAMILY = compute_familySnowflake Postgres 인스턴스 크기 테이블에서 인스턴스 크기의 이름을 지정합니다.
기본값: 원본에서 복사됩니다.
STORAGE_SIZE_GB = storage_gb저장소 크기(GB)를 지정합니다. 10에서 65,535 사이여야 합니다.
기본값: 원본에서 복사됩니다.
HIGH_AVAILABILITY = { TRUE | FALSE }포크에 사용할 고가용성 설정을 지정합니다.
기본값: 원본에서 복사됩니다.
POSTGRES_SETTINGS = 'json_string'JSON 형식의 인스턴스에 Postgres 구성 매개 변수를 선택적으로 설정할 수 있습니다. 사용 가능한 Postgres 매개 변수 목록은 Snowflake Postgres 서버 설정 섹션을 참조하세요.
'{"component:name" = "value", ...}'기본값: 원본에서 복사됩니다.
COMMENT = 'string_literal'사용자에 대한 설명을 지정합니다.
기본값:
NULL
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )태그 이름과 태그 문자열 값을 지정합니다.
태그 값은 항상 문자열이며, 태그 값의 최대 문자 수는 256자입니다.
문에서 태그를 지정하는 방법에 대한 자세한 내용은 Tag quotas 섹션을 참조하십시오.
다음 열이 있는 하나의 행이 반환됩니다.
statushost
CREATE FORK SQL 예제
타임스탬프
2025-01-01 12:00:00``에 원본 인스턴스 ``my_origin_instance``에서 ``my_fork포크를 생성합니다.CREATE POSTGRES INSTANCE my_fork FORK my_origin_instance AT (TIMESTAMP => '2025-01-01 12:00:00');
120``초 전의 원본 인스턴스 ``my_origin_instance``에서 ``my_fork포크를 생성합니다.CREATE POSTGRES INSTANCE my_fork FORK my_origin_instance AT (OFFSET => -120);현재 시간을 기준으로
STANDARD_M인스턴스 크기를 사용하고 고가용성 없이 원본 인스턴스my_origin_instance``에서 ``my_fork포크를 생성합니다.CREATE POSTGRES INSTANCE my_fork FORK my_origin_instance COMPUTE_FAMILY = STANDARD_M HIGH_AVAILABILITY = FALSE;
포크를 생성하면 자격 증명이 표시되지 않습니다. 포크의 자격 증명은 원본 인스턴스와 동일합니다. 필요한 경우 나중에 자격 증명을 다시 생성할 수 있습니다.
포크를 생성하는 데 필요한 시간은 원본 인스턴스의 크기에 따라 다릅니다.