AWS RDS (MySQL)

김기현·3일 전

AWS

목록 보기
11/21

RDS는 사용자가 데이터베이스를 직접 설치하고 운영하는 번거로움을 대신해주는 관리형 서비스이다.

1. 백업 (Backup & Restore)

데이터베이스에서 가장 중요한 것인 데이터를 잃지 않는 것이다.

  • 자동 백업 (Automatic Backup)
    • RDS는 매일 전체 스냅샷을 찍고 트랜잭션 로그를 저장한다.
    • 보존 기간: 보통 7~35일로 설정하여 이 기간 내라면 어떤 시점이라도 복구 가능하다 (Point-in-Time Recovery)
  • 수동 스냅샷 (Manual Snapshot)
    • 사용자가 직접 원하는 시점에 생성하며 명시적으로 삭제하기 전까지는 영구 보관된다.
      • 서비스 업데이트 직전 등 중요한 이벤트 전에 수행한다.
  • 복구 방식
    • 기존 DB를 덮어쓰는 것이 아니라 백업 데이터를 바탕으로 새로운 RDS 인스턴스를 생성한다.

2. 패치 및 유지 관리 (Patching & Maintenance)

소프트웨어는 보안과 안정성을 위해 업데이트가 필수이다.

  • 자동 부이너 버전 업그레이드: MySQL의 마이너 버전 업데이트를 AWS가 자동으로 수행하도록 설정할 수 있다.
  • 유지 관리 창 (Maintenance Window)
    • 업데이트가 진행될 시간대를 정할 수 있다
      • 보통 사용자가 가장 적은 새벽 시간대를 사용한다.
    • 업데이트 중에는 아주 짧은 연결 끊김이 발생할 수 있으므로 애플리케이션에 재시도 로직이 구현되어 있어야하낟.

3. 고가용성 및 성능 확장 (Multi-AZ & Read Replica)

MySQL 인프라를 설계할 때 가장 핵심이 되는 부분이다.

3.1. Multi-AZ (고가용성)

  • 구조: 다른 가용 영역(AZ)에 대기용(Standby) DB를 하나 더 둔다.
  • 작동: 메인 DB에 문제가 생기면 AWS가 자동으로 대기용 DB를 메인으로 승격시킨다 (Failover)
  • 목적: 데이터 보존과 서비스 지속성이 목적이다 (성능 향상 용도가 아님)

3.2. 읽기 전용 복제본 (Read Replica)

  • 구조: 메인 DB의 데이터를 실시간으로 복제하는 별도의 DB 인스턴스를 만든다.
  • 작동
    • Write(CUD) 요청은 메인 DB로 보낸다
    • Read(R) 요청은 복제본으로 보낸다.
  • 백엔드 개발자 적용: 애플리케이션 코드(예: Springboot의 @Trancational(readOnly = true))에서 읽기 전용 DB 커넥션을 분리하여 전체적인 성능을 높일 수 있다.

4. MySQL 사용자를 위한 실무 팁

  • 파라미터 그룹 (Parameter Group)
    • MySQL의 my.cnf 설정을 AWS 콘솔에서 관리하는 기능이다.
    • max_connections, wait_timeout, character_ser_server (utf8mb4 필수) 등을 여기서 수정한다.
  • 스토리지 오토스케일링
    • 데이터가 쌓여서 용량이 부족해지면 자동으로 하드디스크 크기를 늘려주는 기능을 켜두는 것이 좋다.
  • 보안 그룹 설정
    • RDS는 무조건 Private Subnet에 두고, 보안 그룹에서 API 서버의 보안 그룹 ID로부터 오는 3306 포트만 허용해야 한다.

5. 백엔드 개발자 체크리스트

  1. 백업 기간은 충분한가? (보통 7일 이상)
  2. Multi-AZ가 켜져있는가? (운영 환경이라면 필수)
  3. 읽기 부하가 심한데 Read Replica를 고려했는가?
  4. DB 암호를 Secret Manager에 저장했는가?
  5. Slow Query 로그를 활성화하여 성능을 모니터링하고 있는가?
profile
백엔드 개발자를 목표로 공부하는 대학생

0개의 댓글