본문 바로가기
개발 공부/AWS

[AWS] SAA 공부 (6) RDS (Relational Database Service)

by sngynhy 2025. 3. 25.

RDS (Relational Database Service)

관리형 관계형 데이터베이스 서비스

> DB 설치, 관리, 백업, 복제, 장애 복구 등 복잡한 작업을 자동화

주요 특징

  • 관리 자동화
    • 인스턴스 생성, 패치, 업그레이드, 백업, 복구 등을 자동으로 처리
    • 지속적인 백업을 통해 사용자는 이를 활용하여 특정 시점으로 복원 가능 (Point in Time Restore)
  • 지원 엔진 유형
    • Aurora (Amazon Proprietary database)
    • PostgreSQL
    • MySQL
    • MariaDB
    • Oracle
    • Microsoft SQL Server
    • IBM Db2
  • 고가용성 보장
    • Multi-AZ 배포로 장애 발생 시 자동으로 대기 인스턴스로 전환해 서비스의 연속성 보장
  • 성능 모니터링 대시보드 사용
  • Read Replicas
    • 읽기 전용 복제본 생성 > 읽기 부하 분산
  • 인스턴스 타입을 늘려 스케일아웃/스케일업 가능
  • EBS가 스토리지 지원
  • 업그레이드 > Maintenance Windows
  • 단, SSH로 RDS 인스턴스 접속은 불가능
⚡ RDS를 사용하는 것과 EC2 인스턴스에 DB를 직접 배포하는 것과의 차이점

RDS EC2에 직접 설치
관리 자동화 (백업, 복구, 패치 등) 모든 걸 사용자가 직접 관리
Multi-AZ로 장애 복구 지원 수동으로 복제 구성 필요
쉬운 설정 인트턴스, 스토리지 등 직접 세팅
더 높은 비용 발생 가능 비용 절감 가능

RDS - Storage Auto Scaling (중요)

스토리지 용량을 자동으로 확장해주는 기능 (축소는 X)

 

동작 방식

1. 초기 용량 설정 > RDS 인스턴스 생성 시 초기 스토리지 용량 지정

2. 확장 트리거 > DB의 사용량이 일정 임계치에 도달하면  RDS Storage Auto Scaling이 동작

3. 자동 확장 > RDS가 감지하여 지정한 최대 용량까지 스토리지를 자동으로 확장 (DB 중단 방지)

  • 최대 스토리지 임계값 설정 > 스토리지가 무한정 늘어나지 않도록 최대 용량 제한 설정
  • 할당된 용량의 10% 미만으로 남으면 스토리지 설정을 자동으로 변경할 수 있음
  • 스토리지가 5분 이상 부족한 상태가 지속되고 마지막 수정 후 6시간이 지나면 스토리지가 자동으로 확장
  • 업무량이 예측하기 어려운 애플리케이션에 유용
  • RDS의 모든 DB 엔진에 지원

RDS - Read Replicas (읽기 전용 복제본)

  • 읽기 작업을 복제본에 분산하여 읽기 성능을 개선
  • 복제본 최대 15개까지 생성 가능
  • 동일한 AZ 또는 AZ나 리전에 걸쳐서 생성
  • 읽기 전용이기 때문에 SELECT 명령문만 사용 가능

동작 방식

  • 복제본 생성
    • Primary DB의 데이터를 Read Relica에 복제
  • 📌 비동기 복제 (읽기가 일관적으로 유지됨을 의미)
    • Read Replica는 쓰기 작업 없이 읽기 작업만 처리
    • 만약 애플리케이션에서 데이터를 복제하기 전 읽기 전용 복제본을 읽어들이면 모든 데이터를 얻을 수 있음
  • 읽기 부하 분산
    • 애플리케이션에서 Read Replica로 읽기 요청을 분산시켜 Primary DB의 부하를 줄임
  • 📌 수동 장애 조치 > DB로 승격 가능
    • Primary DB에 장애 발생 시 Read Replica를 수동으로 승격해 새로운 Primary DB로 만듦
    • 권한 부여 후에 해당 복제본은 복제 메커니즘을 완전히 탈피
    • 자체적인 라이프사이클을 갖음
  • 📌 읽기 전용 복제본을 사용하기 위해서는 애플리케이션에 있는 모든 연결을 업데이트해야 함
    • 이를 통해 RDS 클러스터 상의 읽기 전용 복제본 전체 목록을 활용할 수 있음

네트워크 비용

  • 동일한 리전 내의 다른 AZ로 데이터 이동 시 무료
  • 서로 다른 리전일 경우 비용 발생
  • (기본적으로 다른 AZ로 데이터 이동 시 비용 발생하며, AWS 관리형 서비스일 경우 무료)

RDS - Multi AZ (for 재해 복구)

  • 장애 발생 시 자동 장애 조치로 서비스 연속성 보장
  • 스케일링 X
  • 📌 읽기 전용 복제본도 Multi AZ 설정 가능

동작 방식

  • 복제본 생성
    • 읽기와 쓰기를 수행하는 Primary DB 인스턴스와  동일한 Standby DB 인스턴스를 다른 AZ에 복제
  • 동기 복제
    • 모든 데이터가 Primary DB -> Standby DB로 동기화
  • 자동 장애 조치 > 하나의 DNS 이름을 갖고, 애플리케이션 또한 하나의 DNS 이름으로 통신
    • Primary DB에 장애 발생 시 RDS가 자동으로 Standby DB를 새로운 Primary로 승격
    • 서비스 연결 자동 전환
  • 재복구
    • 장애 복구 후 새로운 Standby DB를 생성해 Mulity-AZ 구성을 복원

📌 RDS - 단일 AZ에서 다중 AZ로 DB 전환

  • 다운타임 = 0
    • 단일 AZ에서 다중 AZ로 DB를 전환 시 DB를 중지할 필요가 없음
    • 사용자는 설정 옵션 변경 외에 아무 작업도 할 필요 없음

전환 시 (내부) 동작 과정

  1. Primary DB의 RDS가 자동으로 스냅샷 생성
  2. 생성된 스냅샷은 다른 AZ에 새로운 Standby DB에 복원
  3. Standby DB 복원 후 두 DB 간의 동기화 > 다중 AZ 설정 상태

RDS Custom (for Oracle & Microsoft SQL Server)

RDS의 관리 편의성은 그대로 유지하면서, 사용자가 DB에 대한 세부적인 제어 권한을 가질 수 있도록 설계된 서비스

(기존에는 DB 인스턴스에 직접 접근하거나 OS 수준에서 커스터마이징이 불가능했음)

  • RDS Custom 옵션 추가 시
    • 내부 설정 구성, 패치 적용 및 네이티브 기능 활성화 가능
    • SSH 또는 SSM 세션 관리자를 사용하여 RDS 뒤에 있는 EC2 인스턴스에 접근 가능
  • Custom 옵션을 사용하기 위해 RDS가 수시로 자동화, 유지 관리 또는 스케일링과 같은 작업을 수행하지 않도록 자동화를 꺼두는 것이 좋음
  • 사용자가 직접 DB에 접근하면 문제 발생 위험이 높아지므로 DB 스냅샷 활용 필요
  • RDS Custom 가능 엔진 유형
    • Oracle, Microsoft SQL Server