AWS RDS (Relational Database Service) 정리

choiJaewon·2026년 5월 22일
post-thumbnail

<개요>

프로젝트를 하면서 데이터베이스를 클라우드에 올리기에는 로드 밸런싱이 되지 않고, 메모리를 많이 잡아 먹는것이 문제 였다. 이를 해결하기 위해 RDS를 써보자


1. RDS란?

AWS RDS관계형 데이터베이스(RDB) 를 간편하게 클라우드에서 설정, 운영, 확장이 가능하도록 지원하는 웹 서비스이다.

  • MySQL, Oracle 같은 데이터베이스의 설치, 모니터링, 백업, 알람 등 관리를 대신해준다.
  • 하드웨어 프로비저닝, DB 설정, 패치, 백업과 같은 잦은 운영 작업을 자동화하여 비용 효율적이고 크기 조정 가능한 DB 서비스를 제공한다.
  • 따라서 개발자는 DB 인프라 구성에 힘을 들이지 않고, 개발이라는 본질적인 작업에 집중할 수 있다.

EC2에 직접 DB를 설치하는 것 vs RDS 사용

영역EC2에 직접 설치AWS RDS
앱 최적화직접 관리직접 관리
스케일링직접 관리자동 관리
고가용성 처리직접 관리자동 관리
DB 백업직접 관리자동 관리
DB S/W 패치직접 관리자동 관리
OS 패치/설치직접 관리자동 관리
서버 설치 및 정비직접 관리자동 관리
랙 & 스택직접 관리자동 관리
전력, 냉/난방 제어직접 관리자동 관리

즉, RDS는 EC2에 RDB를 직접 구축·운영할 때보다 훨씬 많은 부분을 자동으로 관리해주기 때문에 많이 애용된다.


2. RDS의 주요 특징

- EC2와 비슷한 점

  • EC2 인스턴스를 생성해서 컴퓨팅을 사용하듯이, RDS 인스턴스를 생성해서 DB를 사용하는 원리이다.

- EC2와 다른 점

  • 유저가 시스템에 직접 로그인은 불가능하다.
  • 그래서 RDS 인스턴스의 OS 패치, 관리 등은 AWS가 전담한다.
  • DB에서 발생하는 여러 로그(Error Log, General Log 등)를 CloudWatch와 연동하여 확인 가능하다.

- 네트워크 특징

  • RDS는 기본적으로 VPC 안에서 동작하며, 기본적으로 public IP를 부여하지 않아 외부에서 접근 불가능하다.
  • 다만, 설정에 따라 public으로 오픈 가능하며 대신 로드밸런서같이 DNS로만 접근이 가능하다.
  • VPC 내에서 동작하므로 서브넷과 보안그룹 지정이 필요하다.

- 스토리지 특징

  • RDS 인스턴스 생성 시 인스턴스 타입과 EBS 타입을 지정해야 한다.
  • 유동적으로 용량을 증설하는 것이 아닌, 생성 시 EBS의 용량을 지정해서 생성한다. (추후 증설 가능)
  • 참고로 Amazon Aurora는 용량 지정 X, 사용한 만큼만 비용 지불

- 파라미터 그룹 (Parameter Group)

RDS의 가장 큰 특징

  • DB의 설정값들을 모아 그룹화한 개념
  • DB 설정들을 모은 그룹을 각 DB 인스턴스에 적용시켜 DB 설정값을 적용하는 시스템
  • 직접 RDS 인스턴스 수정이 불가능하기 때문에 이런 우회적인 방법으로 설정값을 세팅한다.

Tip: AWS 프리티어로는 RDS를 12개월 동안 단일 AZ, db.t2.micro 인스턴스를 750시간 무료 사용할 수 있다.


3. RDS에서 지원하는 DB 종류

RDS에서는 총 6개의 데이터베이스 엔진 중에서 원하는 DBMS를 선택할 수 있다.

DB 엔진특징
Amazon AuroraMySQL/PostgreSQL 호환, 표준 MySQL보다 5배, PostgreSQL보다 3배 빠름. 상용 DB 보안/가용성/안전성을 1/10 비용으로 제공
PostgreSQL오픈 소스 RDB 중 기능과 성능이 가장 좋은 거의 원탑의 데이터베이스
MySQL세계적으로 가장 많이 사용되는 오픈 소스 RDB
MariaDBMySQL 개발자가 만든 오픈 소스 RDB, MySQL 업그레이드 판
Oracle오라클사의 유료 RDB
MS SQL ServerMicrosoft의 RDB

또한 AWS Database Migration Service를 사용하여 기존 데이터베이스를 Amazon RDS로 손쉽게 마이그레이션 또는 복제할 수 있다.


4. RDS의 특징 & 기능

1️⃣ 관리 부담 감소

  • 사용 편의성: 몇 분 이내에 DB 인스턴스를 시작하고 애플리케이션 연결 가능
  • 자동 소프트웨어 패치: 최신 패치를 통해 RDB 소프트웨어가 최신 상태로 유지
  • 모범 사례 권장 시스템: DB 인스턴스의 구성과 사용 지표를 분석하여 권장 사항 제공

2️⃣ 확장성

  • 즉각적인 컴퓨팅 규모 조정: 최대 vCPU 32개와 RAM 244GB 범위 내에서 확장/축소 가능
  • 간편한 스토리지 규모 조정: DB 가동 중단 없이 즉시 스토리지 확장 가능
  • 읽기 전용 복제본 시스템(Read Replica): DB 인스턴스의 복제본을 생성하여 대량의 읽기 트래픽 처리

3️⃣ 가용성 및 내구성

  • 자동 백업: 백업 보존 기간 중 어느 시점(초 단위)으로나 복원 가능 (최근 5분 전까지). 최대 35일 보존 가능
  • 데이터베이스 스냅샷: 사용자가 원하는 경우 언제든 스냅샷으로 새 DB 인스턴스 생성
  • 다중 AZ 구성 배포: Primary DB 장애 시 다른 AZ의 RDB로 빠르게 장애 복구
  • 자동 호스트 교체: 하드웨어 장애 시 컴퓨팅 인스턴스 자동 교체

4️⃣ 보안

  • 저장/전송 데이터 암호화: AWS KMS(Key Management Service) 키를 사용해 암호화
  • 네트워크 격리: VPC에서 DB 인스턴스를 실행하여 방화벽 설정 구성
  • IAM 리소스 수준 권한: IAM과 통합되어 사용자/그룹 권한 제어

5. RDS 백업 시스템

🔹 자동 백업 (Auto Backup)

  • 자동으로 스냅샷을 떠서 백업하는 방식
  • 인스턴스 삭제 시 스냅샷도 모두 사라진다는 특징

🔹 수동 백업 (DB 스냅샷)

  • 유저 혹은 다른 프로세스로부터 요청에 따라 만들어지는 DB 스냅샷
  • EC2 스냅샷처럼 사용자에 의해 수동적으로 진행되는 백업
  • 원본 RDS를 삭제한다고 하더라도, 스냅샷은 S3 버킷에 그대로 존재한다.
  • 따라서 스냅샷만으로 RDS 인스턴스를 복원시킬 수 있다.

🔹 백업 복구 시 도메인 변경

  • 원본 RDS 인스턴스로 새로운 DB를 복원 시 새로운 인스턴스와 Endpoint가 생성된다.
  • 원본 DNS는 앞에 original인 반면, 복원된 것은 앞에 restored가 붙는다.
원본: original.ap-northeast-2.rds.amazonaws.com
복원: restored.ap-northeast-2.rds.amazonaws.com

복구 시에는 새로운 DB를 만들고 기존 DB 연결을 끊고 새로 만든 DB에 연결해주는 작업이 필요하다.


6. RDS 구성 아키텍처

AWS RDS는 데이터베이스를 효율적으로 관리할 수 있게 하는 인프라 아키텍처 3가지를 제공한다.

구분Multi-AZMulti-RegionRead Replica
목적고가용성DR / 로컬 퍼포먼스확장성 / 성능
복제 방식Sync (동기)Async (비동기)Async (비동기)
액티브Primary DB만 읽기/쓰기 가능Read만 가능Read만 가능
백업자동 백업(Standby 기준)자동 백업 가능기본적으로 백업 X
엔진 업데이트Primary만 업데이트각 리전별로 다른 업데이트DB별로 다른 업데이트
FailOver자동으로 Standby로 Failover수동으로 Failover수동으로 Failover

🔹 RDS Multi AZ 구조

RDS Multi-AZ는 2개 이상의 AZ에 걸쳐 데이터베이스를 구축하고 원본과 다른 DB(Standby) 를 자동으로 동기화(Sync) 하는 구조이다.

[User]
   ↓
[VPC]
   ├── Availability Zone 1
   │     └── AWS RDS (Primary) - Instance + EBS
   │              ↓ Sync 복제
   └── Availability Zone 2
         └── AWS RDS (Standby) - Instance + EBS

Multi-AZ는 고가용성(HA) 목적이고, Read Replica는 읽기 성능 향상 목적이라는 점을 명확히 구분해야 한다.


7. RDS 구축 과정

Step 1. 데이터베이스 선택

  • AWS Console → RDS → 데이터베이스 → 데이터베이스 생성
  • 표준 생성 선택 (가용성, 보안, 백업 및 유지 관리에 대한 모든 옵션 설정)
  • 엔진 옵션: MySQL / Aurora / MariaDB / PostgreSQL / Oracle / MS SQL Server 중 선택

Step 2. 템플릿 선택

템플릿설명
프로덕션멀티 AZ 지원, 고가용성/성능
개발/테스트싱글 RDS 인스턴스
프리 티어무료 사용 (단일 AZ)

설정

  • DB 인스턴스 식별자: DB 인스턴스에 대해 고유한 이름 지정 (예: MyDB)
  • 마스터 사용자 이름: 나중에 CLI나 GUI Tool로 접속할 때 사용 (예: admin)
  • 암호 자동 생성 또는 직접 지정

Step 3. 인스턴스 클래스 선택

인스턴스 클래스는 3가지 종류가 있다.

용도인스턴스 클래스내용
표준db.m5 등범용적인 인스턴스 클래스
메모리 최적화db.x1e, db.x1, db.r5 등메모리를 많이 사용하는 애플리케이션에 최적화
버스트 성능db.t3 등CPU 최대 사용률까지 버스트 성능으로 사용 가능

프리티어는 보통 db.t3.micro (2 vCPUs, 1 GiB RAM) 사용

Step 4. EBS (스토리지) 선택

RDS 인스턴스도 일종의 EC2이기 때문에 EBS 스토리지가 필요하다.

스토리지 유형특징
범용(SSD)일반적인 워크로드에 적합 (gp2/gp3)
프로비저닝된 IOPS(SSD)고성능 워크로드, IOPS 직접 지정
마그네틱가장 저렴, 권장되지 않음
  • 스토리지 자동 조정: 처리량 급증으로 DB 여유공간 부족 시 자동 확장 (EC2 Auto Scaling의 RDS 버전)
  • 최대 스토리지 임계값: DB 인스턴스가 자동으로 확장할 수 있는 제한 값
  • 프리티어 최대 할당량: 20GB

Step 5. VPC 전반 설정

RDS 인스턴스도 일종의 EC2이기 때문에, 위치할 VPC를 설정해주어야 한다.

설정 항목설명
VPC / 서브넷 그룹VPC가 구성되어 있다면 선택, Default 사용 가능. EC2와 연동 시 동일한 곳에 설치하는 것이 일반적
퍼블릭 액세스 가능DB 인스턴스에 공인 IP 할당 여부. 외부에서 MySQL Workbench 접속 예정이면 활성화
VPC 보안 그룹인/아웃바운드 규칙이 정의된 보안 그룹 설정
포트MySQL 기본 포트인 3306 사용

Step 6. 추가 설정

  • 데이터베이스 인증 옵션: 암호 인증 / IAM 인증 / Kerberos 인증
  • 모니터링: Database Insights (CloudWatch 연동)
  • 백업 보존 기간: 0~35일 설정 가능
  • 유지 관리: 자동 마이너 버전 업그레이드 여부


-다음과 같이 생성이 완료 되는것을 볼수 있다.


8. 파라미터 그룹(Parameter Group) 실전 설정

RDS는 인스턴스에 직접 SSH로 접속할 수 없기 때문에, 파라미터 그룹을 통해 우회적으로 DB 설정값을 적용한다.
실제 프로젝트에서 자주 변경하게 되는 대표적인 3가지 설정을 정리해본다.

🔹 8-1. 사용자 지정 파라미터 그룹 생성

먼저 기본값을 그대로 사용하지 않고, 새로운 파라미터 그룹을 생성해야 한다.
(기본 파라미터 그룹은 수정 불가능하기 때문)

  • AWS Console → RDS → 파라미터 그룹파라미터 그룹 생성
  • 패밀리 선택 (예: aurora-mysql5.7, mysql8.0)
  • 그룹 이름 지정 (예: mysql-custom-paramgroup)

🔹 8-2. 타임존(time_zone) 설정

RDS는 기본적으로 UTC 기준으로 동작하기 때문에, 한국 서비스라면 반드시 Asia/Seoul로 변경해줘야 한다.

파라미터: time_zone
값: Asia/Seoul

변경 절차

  1. 검색창에 time_zone 입력
  2. 파라미터 편집 클릭
  3. 허용된 값 목록에서 Asia/Seoul 선택
  4. 변경 사항 저장

타임존을 설정하지 않으면 CREATED_AT, UPDATED_AT 같은 컬럼이 9시간 차이가 나서 디버깅 시 큰 혼란을 준다.

🔹 8-3. UTF-8 (한글 인코딩) 설정

한글 데이터가 깨지지 않고 잘 출력되게 하려면 utf-8 인코더를 설정해줘야 한다.
char 검색 후 나오는 모든 부분의 값을 utf8mb4 로 설정한다.

파라미터
character_set_clientutf8mb4
character_set_connectionutf8mb4
character_set_databaseutf8mb4
character_set_resultsutf8mb4
character_set_serverutf8mb4
character_set_filesystemutf8mb4

💡 Tip - utf8 vs utf8mb4

  • utf8utf8mb4 모두 한글이 깨지지 않게 인코딩해주지만 차이가 있다.
  • utf8이모지를 저장할 수 없지만, utf8mb4이모지를 저장할 수 있다.
  • utf8은 가변 3바이트를 사용하는 반면, utf8mb4는 내부적으로 한 문자를 표현하는데 4바이트를 사용한다.
  • 따라서 3바이트만 사용하는 utf8은 이모지를 저장할 수 없다.

🔹 8-4. Collation 변경

collation을 검색하여 collation 부분을 모두 utf8mb4_general_ci 로 바꿔준다.

파라미터
collation_connectionutf8mb4_general_ci
collation_serverutf8mb4_general_ci
  • collation_connection: connection character set의 collation
  • collation_server: server의 default collation

🔹 8-5. RDS 인스턴스에 파라미터 그룹 적용하기

새로 만든 파라미터 그룹은 자동으로 적용되지 않는다. RDS 인스턴스에 명시적으로 연결해줘야 한다.

변경 절차

  1. RDS → 데이터베이스 → 해당 인스턴스 선택 → 수정
  2. 추가 구성DB 파라미터 그룹 항목에서 새로 만든 그룹 선택
    • 예: default.mysql8.0mysql-custom-paramgroup
  3. 계속 클릭

🔹 8-6. 설정 변경 즉시 적용하기

최하단 [계속] 버튼을 누르면 수정 사항 요약이 나온다.
여기서 반영 시점을 선택해야 한다.

옵션설명
예약된 다음 유지 관리 기간에 적용새벽 유지 관리 시간대에 진행 (서비스 운영 중일 때 권장)
즉시 적용지금 바로 반영 (개발/구축 단계에서 사용)

주의: 즉시 적용 시 데이터베이스가 잠시 작동하지 않을 수 있기 때문에 운영 환경에서는 예약 적용을 권장한다.
다만 아직 서비스가 오픈되지 않은 구축 단계라면 즉시 적용을 선택해도 무방하다.

적용이 완료되면 상단에 "파라미터 그룹 ○○○ 수정 완료" 메시지와 함께 인스턴스 상태가 사용 가능으로 표시된다.


9. 외부에서 RDS 접속하기 (MySQL Workbench)

RDS는 기본적으로 VPC 내부에서만 접근 가능하지만, 개발 중에는 로컬 PC에서 MySQL Workbench로 직접 접속해서 데이터를 확인하는 일이 많다.

🔹 9-1. 엔드포인트(Endpoint) 확인

먼저 방금 생성한 데이터베이스에 들어가서 연결 & 보안 탭의 엔드포인트 DNS 주소를 복사해둔다.

예시: mydb.cauufra5fcmt.ap-northeast-2.rds.amazonaws.com
포트: 3306

이 엔드포인트를 통해서 워크벤치에서 AWS로 데이터베이스를 연결하여 마치 원격 조작을 행할 수 있다.

🔹 9-2. 퍼블릭 액세스 + 보안 그룹 인바운드 설정

외부에서 접속하려면 두 가지 설정이 모두 켜져 있어야 한다.

① 퍼블릭 액세스 허용

  • RDS → 데이터베이스 → 수정 → 추가 구성퍼블릭 액세스 가능 체크
  • DB 인스턴스에 공인 IP가 할당되어 외부에서 접근 가능해진다.

② 인바운드 규칙 추가

EC2 → 보안 그룹 → 해당 RDS 보안 그룹 선택 → 인바운드 규칙 편집

유형프로토콜포트 범위소스
MySQL/AuroraTCP3306내 IP (예: 211.214.138.103/32)

⚠️ 주의: 내 IP를 지정해주어야 한다. IP가 유동적으로 변하니 이 점을 유의하도록 하자.
(공유기/통신사에 따라 IP가 바뀔 수 있어, 접속 안 되면 IP를 다시 확인해야 한다.)

🔹 9-3. MySQL Workbench 연결

  1. MySQL Workbench 실행 → MySQL Connections 옆 + 버튼 클릭
  2. 새 Connection 생성:
    • Connection Name: 이름 아무거나 (예: Rds-recycleDB)
    • Connection Method: Standard (TCP/IP)
    • Hostname: 아까 복사한 엔드포인트 입력
    • Port: 3306
    • Username: RDS 생성 시 만든 마스터 사용자 이름 (예: admin)
    • Password: Store in Vault 클릭 → RDS에서 만든 마스터 암호 입력
  3. Test Connection 클릭해서 잘 연결되는지 테스트
  4. OK 클릭

🔹 9-4. 한글 입출력 테스트

파라미터 그룹에서 utf8mb4로 설정한 것이 잘 적용되었는지 테스트해본다.

use testDB;
create table test (
    id bigint(20) NOT NULL auto_increment,
    content varchar(255) default NULL,
    primary key(id)
) engine = innoDB;

insert into test(content) values('한글 테스트');
select * from test;

결과로 한글 테스트가 깨지지 않고 정상 출력되면 성공이다.


10. 로컬 DB → RDS 데이터 마이그레이션

기존에 로컬에서 개발하던 DB를 그대로 RDS로 옮기는 작업이다.
가장 쉬운 방법은 MySQL Workbench의 Export/Import 기능을 사용하는 것이다.

🔹 10-1. 1단계: 로컬 DB 데이터 내보내기 (Export)

먼저 내 컴퓨터에 있는 데이터를 SQL 파일로 추출해야 한다.

  1. MySQL Workbench에서 Local Instance MySQL80에 접속
  2. 상단 메뉴 → ServerData Export 클릭
  3. Tables to Export: 옮기고자 하는 프로젝트의 데이터베이스(스키마) 선택
  4. Export Options: Export to Self-Contained File 선택하고 저장 경로 기억
  5. 오른쪽 하단의 Start Export 버튼을 눌러 .sql 파일 생성 완료
예시 경로: C:\Users\saeyu\Documents\dumps\Dump20260222.sql

🔹 10-2. 2단계: RDS로 데이터 가져오기 (Import)

이제 방금 만든 SQL 파일을 클라우드 위(RDS)로 쏘아 올릴 차례이다.

  1. MySQL Workbench에서 RDS Connection(아까 엔드포인트로 만든 것)에 접속
  2. 상단 메뉴 → ServerData Import 클릭
  3. Import Options: Import from Self-Contained File 선택하고, 1단계에서 만든 SQL 파일을 불러오기
  4. Default Target Schema: 데이터를 넣을 RDS 내의 스키마를 선택
    • 만약 RDS에 아직 스키마를 안 만드셨다면 [New] 버튼을 눌러 로컬과 동일한 이름으로 생성
  5. Start Import를 누르면 데이터 복사가 시작됩니다.

🔹 10-3. 마이그레이션 요약

단계위치메뉴옵션
1. ExportLocal Instance MySQL80Server → Data ExportExport to Self-Contained File (.sql 저장)
2. ImportRDS ConnectionServer → Data ImportImport from Self-Contained File (.sql 불러오기)

11. 마무리 - 핵심 키워드

  • Managed Service: AWS가 OS 패치, 백업, 모니터링 등을 대신해주는 완전 관리형 서비스
  • Multi-AZ vs Read Replica: 고가용성(HA) vs 읽기 성능 확장
  • Sync vs Async 복제: 데이터 일관성과 성능의 트레이드오프
  • Parameter Group: 직접 인스턴스 수정 불가하므로 우회적으로 DB 설정 적용
  • VPC 내부 동작: 기본적으로 외부 접근 불가, 보안 그룹과 서브넷 그룹 필수
  • 자동 백업 vs 수동 스냅샷: 인스턴스 삭제 시 자동 백업은 삭제되지만, 수동 스냅샷은 S3에 보존
  • Failover: Multi-AZ는 자동, Read Replica/Multi-Region은 수동
  • Endpoint 기반 접근: VPC 내부 동작 + 퍼블릭 액세스 + 인바운드 규칙(내 IP) 3가지 모두 충족해야 외부 접속 가능
  • 데이터 마이그레이션: Workbench Export/Import 또는 AWS DMS(Database Migration Service) 활용

📚 Reference


0개의 댓글