스냅샷

스냅샷

클러스터가 갑자기 망가져도 데이터를 되살릴 수 있는 방법, 스냅샷을 알아볼게요. 스냅샷은 클러스터의 특정 시점(point-in-time) 상태를 담은 백업이에요. 자동으로 생기는 것과 수동으로 만드는 것, 두 종류가 있고 둘 다 Amazon S3에 저장돼요. 스냅샷을 잘 이해해 두면 장애 대비는 물론이고 복원 비용을 아끼는 데까지 관리 범위가 넓어져요.

출처: https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-snapshots.html

자동 스냅샷과 수동 스냅샷

자동 스냅샷은 클러스터에서 이 기능이 켜져 있으면 Amazon Redshift가 주기적으로 찍어 줘요. 기본적으로 대략 8시간마다, 또는 노드당 데이터가 5GB씩 바뀔 때마다 둘 중 먼저 오는 시점에 스냅샷을 만들어요. 자동 스냅샷은 보관 일수(보존 기간)를 정해 관리하는데, 저장 비용을 통제하려면 이 보관 기간을 잘 조정하는 게 좋아요.

수동 스냅샷은 직접 원하는 시점에 만들어 두는 스냅샷이에요. 클러스터를 업그레이드하거나 큰 변경 전에 찍어 두면, 문제가 생겼을 때 그 시점으로 되돌아가기 수월해요. 수동 스냅샷은 계정과 리전 단위로 만들 수 있는 총 개수에 제한(쿼터)이 있으니, 오래 쌓아 두기보다 지금 필요한 것만 남기고 지우는 습관이 좋아요.

스냅샷 일정을 만들어 클러스터에 연결하면, 그 일정에 따라 시스템 스냅샷이 생성돼요. 하나의 일정을 여러 클러스터에 붙일 수도 있고, 일정 안에 크론 정의를 여러 개 만들어 스냅샷 시점을 다양하게 트리거할 수도 있어요.

스냅샷 저장과 비용

스냅샷은 Amazon S3에 저장되는데, 연결은 암호화된 SSL로 이뤄져요. 스냅샷이 얼마나 많은 저장 공간을 쓰는지는 콘솔이나 describe-storage CLI 명령으로 확인할 수 있어요. 백업 저장 비용을 관리하려면 자동 스냅샷을 며칠이나 보관할지 보존 기간부터 점검하고, 더 이상 필요 없는 수동 스냅샷은 정리해 두는 게 기본 자세예요.

백업에서 제외할 테이블

기본적으로 모든 사용자 정의 영구 테이블은 스냅샷에 포함돼요. 그런데 스테이징 테이블처럼 백업이 꼭 필요 없는 테이블이라면, 스냅샷에서 제외할 수 있어요. 이렇게 하면 스냅샷 생성과 복원에 걸리는 시간이 크게 줄어들고, S3 저장 공간도 아낄 수 있어요. 테이블이 스냅샷에 포함될지 여부는 CREATE TABLE(또는 CREATE TABLE AS) 구문의 설정으로 정해져요.

한편 Amazon Redshift Serverless에서도 프로비저닝된 클러스터처럼 백업을 쓸 수 있어요. Serverless에서는 직접 만드는 스냅샷과, 서비스가 자동으로 만드는 복구 지점(recovery point) 두 종류가 있어요. 프로비저닝 클러스터의 스냅샷을 Serverless 네임스페이스로 복원하는 것도 가능해요.

더 알아보기