[AWS] RDS 스냅샷(수동 스냅샷 생성, 자동 스냅샷 활성화, 스냅샷을 통한 복구 방법, 스냅샷 요금)

 

스냅샷

스냅샷이란 특정 시점의 데이터 저장 장치 상태를 파일이나 이미지로 저장하는 것을 의미한다.

AWS RDS는 스냅샷 기능을 제공하는데, DB 스냅샷을 백업해두면 DB에 문제가 생겼을 때 특정 시점으로 복원하기가 쉽다.

AWS RDS의 스냅샷에는 수동 스냅샷과 자동 스냅샷이 존재한다.

 

수동 스냅샷

  • 사용자가 원할 때 스냅샷 생성
  • 공유 가능
  • 별도의 보존 기간 가지지 않음(지우지 않는이상 무한히 저장된다.)

자동

  • 주기적으로 RDS 인스턴스의 상태를 저장
  • 스냅샷은 보존 기간이 존재한다(디폴트 7일)
  • 특정 패턴에 따라 이름이 설정되어 저장
  • 공유 불가능

 


수동 스냅샷

수동 스냅샷 저장

우선 테스트를 위해 “mydb”라는 이름의 mysql 데이터베이스를 하나 만들어주었다.

최소 사양을 선택했으며, 이후 자동 스냅샷 설정을 활성화 하기위해 자동 백업은 해제하고 만들었다.

수동 스냅샷을 생성하는 방법은 간단하다.

RDS로 들어가서 좌측 사이드바 스냅샷 > 수동 > 스냅샷 생성 버튼을 누르면 수동으로 현재 DB의 스냅샷을 생성할 수 있다.

스냅샷의 유형은 인스턴스로 골라주고 네이밍 규칙을 잘 지켜서 스냅샷 이름을 적어주고 스냅샷 생성을 누르면 스냅샷이 만들어진다.

아주 적은 양의 데이터(고작 스키마 1개, 테이블 1개, row 5개)였는데도 스냅샷을 만드는데에 5분이나 걸렸다.

아마도 AWS에서 제공하는 DB 스냅샷은 덤프처럼 ddl, dml을 추출하는게 아니라 그 당시에 DB 인스턴스 상태 전체를 복사하는 방식이기 때문에 그런건가 싶다.

또, 복제할 때 다중 AZ를 쓰지 않는다면 DB 인스턴스의 I/O가 중지되니 주의하라는 글을 보았는데

나는 백업중에 read, write가 되기는 했다.(복사하는 5분 I/O가 안되는 건 아닌 것 같다.)

그래도 잠깐이라도 I/O가 멈출 수 있으니, 서비스 운영 DB라면 요청이 적을 때 백업하는게 좋을 것 같다.


스냅샷으로 복구하기

이번에는 수동으로 만든 스냅샷으로 예전 DB 상태로 복구해보려고 한다.

테스트를 위해서 아래 쿼리를 이용해서 Post라는 이름의 테이블과 그 안에 row 5개를 넣어주었다.

CREATE TABLE Post (
       id INT AUTO_INCREMENT PRIMARY KEY,
     content VARCHAR(100)
);

insert Post(id, content) values(1, "a"), (2, "b"), (3, "c"), (4, "d"), (5, "e");

결과:

 

 

그리고나서 수동 스냅샷을 하나 만들어주고

 

 

스냅샷이 사용 가능 상태가 될 때까지 기다렸다가, Post table을 drop 해보았다.

drop table Post;

 

 

 

다시 AWS로 돌아가서 날아간 데이터들을 복구해보자.
RDS 우측 상단 작업 > 스냅샷 복원을 눌러서 복구 가능하다.


스냅샷으로 복원할 때도 DB 인스턴스를 처음 만들때와 마찬가지로 배포 옵션, 연결 등 설정들을 해주어야한다.

 

설정 후 “DB 인스턴스 복원” 버튼을 누르면 아예 새로운 인스턴스가 생성된다.

(기존 인스턴스는 지워지지 않는다)

 

새롭게 만들어진 인스턴스(사진에서는 db2)에 접근해 확인해보면, 스냅샷을 생성했던 시점의 데이터들이 들어있는 것을 확인할 수 있다.

 

 


자동 스냅샷

이제 DB 인스턴스의 자동 스냅샷 기능을 켜보려고 한다.

“유지 관리 및 백업”으로 들어가면 현재는 자동 백업이 비활성화됨을 확인할 수 있었다.

우측 상당 작업 > 백업 켜기를 눌러 자동 백업을 켜주고

 

다시 “유지 관리 및 백업”에서보면 자동 백업이 활성화 돼있고 즉시 스냅샷 하나가 만들어지고 있는 것을 볼 수 있다.

UTC 기준 오전 4시 쯤에 백업이 이루어지며, 스냅샷은 7일간 보존된다.

 

 


스냅샷 비용

찾아보니 리전의 전체 데이터베이스 스토리지의 100%에 해당하는 백업 스토리지에 대해서는 추가 비용이 발생하지 않는다.

이를 초과하거나, DB 인스턴스가 종료되고 백업만 남아있는 경우, 매월 1GB당 USD 0.095 청구된다.

 


Reference

https://aws.amazon.com/ko/rds/mysql/pricing/

https://arckwon.tistory.com/entry/AWS-RDS-스냅샷-복원방법-및-주의사항

https://velog.io/@junghoyoon/AWS-rds-%EC%8A%A4%EB%83%85%EC%83%B5%EC%9C%BC%EB%A1%9C-DB-%EB%B3%B5%EC%9B%90-%ED%95%98%EA%B8%B0

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html

'개념 공부 > Network, Infra, CICD' 카테고리의 다른 글

[Network] OSI 7계층  (0) 2024.12.22
[AWS] Elastic IP(탄력적 주소)란?  (0) 2024.12.10
[CI/CD] Jenkins란 무엇인가  (0) 2024.05.04
myoskin