공부, 기록

[AWS] RDS 스냅샷 본문

공부/DATABASE

[AWS] RDS 스냅샷

무는빼주세요 2024. 9. 15. 16:36

스냅샷의 생성 원리와 스냅샷 생성에 따른 DB 서버 성능 영향에 대하여 의문이 생겨 확인.

 

스냅샷 용량 계산

볼륨에서 생성하는 첫 번째 스냅샷은 항상 전체 스냅샷입니다. 스냅샷을 생성할 때 볼륨에 작성된 모든 데이터 블록이 여기에 포함됩니다. 동일한 볼륨의 후속 스냅샷은 증분 스냅샷입니다. 마지막 스냅샷이 생성된 이후 볼륨에 작성된 변경된 데이터 블록과 새 데이터 블록만 여기에 포함됩니다.

전체 스냅샷의 크기는 소스 볼륨의 크기가 아니라 백업되는 데이터의 크기에 따라 결정됩니다. 마찬가지로 전체 스냅샷과 관련된 스토리지 비용은 소스 볼륨의 크기가 아니라 스냅샷의 크기에 따라 결정됩니다.

예를 들어, 50 GiB의 데이터만 포함하는 200 GiB Amazon EBS 볼륨의 첫 번째 스냅샷을 생성합니다. 그 결과 전체 스냅샷 크기가 50 GiB이며, 50 GiB 스냅샷 스토리지에 대한 요금이 청구됩니다.

계속해서 20 GiB의 데이터를 변경하고 10 GiB의 데이터를 추가한 후 200 GiB 볼륨의 두 번째 스냅샷을 생성하는 경우 증분 스냅샷의 크기는 30 GiB입니다. 그러면 추가 30 GiB 스냅샷 스토리지에 대한 요금이 청구됩니다.

스냅샷 생성 방식.

파일 시스템 잠금

볼륨의 스냅샷을 찍기 전에 파일 시스템에 대한 새로운 쓰기를 차단하는 것이 중요합니다. 이렇게 하면 기본 볼륨의 스냅샷이 일관된 상태가 됩니다.

스냅샷이 시작될 때 일관된 상태를 유지하고 필요한 데이터를 디스크에 플러시하라는 메시지가 전송됩니다.

플러시에 걸리는 시간은 메모리에 있는 데이터 양, 데이터 상태, 데이터를 디스크에 쓰는 데 걸리는 시간에 따라 달라집니다.

스냅샷을 지원하는 각 애플리케이션이 동결 준비를 완료하면 스냅샷 프로세스가 파일 시스템을 스냅합니다. 즉, 추가 데이터 블록이 쓰여지면 먼저 백업 프로세스(COW - 쓰기 시 복사)를 위해 복사본이 만들어집니다. 그런 다음 각 애플리케이션에 해동(재개) 메시지/명령이 전송됩니다.

가볍게 사용되는 데이터베이스의 경우 이 동결/해동 프로세스는 수백 밀리초 밖에 걸리지 않습니다. 디스크에 플러시해야 하는 GB 메모리가 있는 대용량 데이터베이스의 경우 몇 초가 필요합니다.

동결/해동 주기가 발생하는 동안 새 사용자 요청에 대한 디스크 I/O가 중단됩니다. 데이터베이스는 계속 실행 중이지만 디스크/파일 시스템이 동기화되는 동안 모든 요청이 일시 중지됩니다. 해동 메시지를 수신하면 모든 것이 재개됩니다.

 

파일 시스템 플러싱

대부분의 경우 운영 체제는 비휘발성 저장소에 동기화 쓰기를 수행하지 않고, 애플리케이션이나 데이터베이스에서 달리 지정하지 않는 한 성능상의 이유로 페이지 캐시 에 캐시합니다.

MySQL은 명령을 통해 잠금 및 플러싱을 지원합니다. (FLUSH TABLES WITH READ LOCK)

 

스냅샷 찍기

시점 백업 또는 스냅샷에는 데이터 블록의 실제 복사가 포함됩니다. 

 

파일 시스템 잠금 해제

스냅샷이 촬영되면 파일 시스템을 잠금 해제하고 쓰기를 포함한 일반 작업을 계속할 수 있습니다. 예를 들어 MySQL UNLOCK TABLES명령은 이를 달성하는 데 도움이 될 수 있습니다.

 

 

성능 영향

RDS

백업 기간 중에 백업 프로세스가 시작될 때 스토리지 I/O가 일시적으로 중단될 수 있으며, 일시적으로 지연 시간이 증가하는 것을 경험할 수도 있습니다.

Multi-AZ DB를 사용하면 백업이 복제본에서 수행되므로, I/O가 중단되지 않습니다 (단, SQL SERVER는 Windows VSS (Volume Snapshot Copy Service) 를 통하여 스냅샷을 생성하는데 이로 인하여 I/O 중단이 발생합니다).

Aurora

백업 데이터를 쓰는 중에도 성능에 미치는 영향이나 데이터베이스 서비스 중단은 일어나지 않습니다 (여러 복제본 중 하나의 복제본에서 백업을 생성하기 때문에 )

 

 

참고

https://docs.aws.amazon.com/ko_kr/ebs/latest/userguide/ebs-snapshots.html

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html

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

https://engineering.cred.club/lazy-loading-of-snapshot-restores-and-its-implications-on-database-performance-d866097b02fa