
RDS란?

RDS (Relational Database Service) : 관계형 데이터베이스 서비스
DB와 관련된 모든 작업을 제공하므로 Fully Managed Relational Database(완전 관리형 관계형 데이터베이스)라고도 불림
ORACLE, MySQL, PostgreSQL, MariaDB, Aurora 등 다양한 DB엔진 제공
DB 이중화 작업(Multi-AZ, 복수 개의 가용 영역에 DB 인스턴스를 두어 이중화), Read Replica 생성, 인스턴스 확장 손쉽게 가능
EC2 인스턴스에 직접 MySQL 서버를 설치하여 사용할 수도 있지만 RDS를 사용하면 데이터베이스 관리 시간을 줄일 수 있음
RDS 기본 구조
Master DB (Primary DB) : 읽기와 쓰기 작업이 이루어지는 인스턴스
Standby DB : 장애 예방 목적의 DB 이중화 작업을 위해 사용 → 다중 AZ
Read Replica : 읽기 전용 복제본, 읽기만 하는 용도로 사용하는 인스턴스, 멀리 떨어진 곳에서도 빠르게 데이터를 읽을 수 있도록 함
Master DB의 데이터는 Standby DB로 동기 복제가 이루어져 항상 동일한 데이터 유지
Master DB의 데이터는 Read Replica로 비동기 복제가 이루어짐, 굉장히 짧은 시간 내에 이루어져 거의 동일하게 데이터가 유지
Replication : 백업과 성능 향상을 위해서 데이터베이스를 여러 대의 서버에 복제하는 행위 (읽기 작업은 슬레이브, 쓰기 작업은 마스터)
Failover : Master DB 장애 발생 시 장애 극복을 위해 Standby DB를 통하여 읽기와 쓰기 작업 진행
RDS 백업 시스템
자동 백업(Automated Backups) : 매일 스냅샷과 트랜잭션 로그를 참고하여 자동 백업, 롤백도 가능(다른 DB 인스턴스를 새로 생성해 스냅샷을 적용하는 방식)
수동 백업 : 요청에 따라 만들어지는 DB 스냅샷, RDS를 삭제해도 스냅샷은 S3 버킷에 그대로 존재
RDS 인프라 아키텍쳐
Multi-AZ : 단일 지역 내 항상 2개 이상의 가용 영역에 걸쳐 데이터베이스 구축 (안정성), 접근 불가
Read Replica : 가용 영역, 교차 AZ 또는 교차 지역 내에 있는 복제본 (부하 분산), 복제본 인스턴스 각각에 DNS가 부여되어 접근 가능
| Multi-AZ(다중 AZ) | Multi-Region(다중 리전) | Read Replica(읽기 전용 복제본) | |
|---|---|---|---|
| 목적 | 고가용성(안정성) | 로컬 퍼포먼스 | 확장성 |
| 복제 | 동기식 복제 | 비동기식 복제 | 비동기식 복제 |
| 접근 | Primary DB만 읽기/쓰기 가능 | 읽기만 가능 | 읽기만 가능 |
| 백업 | 자동 백업(Standby 기준) | 자동 백업 가능 | 기본적으로 백업 X |
| 업데이트 | Primary만 | 각 리전별로 다르게 | DB별로 다르게 |
| 문제 감지 | 자동 Failover (Standby로) | 수동 Failover | 수동 Failover |

RDS 인스턴스 생성하기 (Master DB 생성하기)







인스턴스 생성 후 암호 반드시 복사해두기
엔드포인트는 DB 인스턴스에 접속하기 위한 주소


DB 인스턴스를 다중 AZ 배포로 전환하기 (Standby DB 생성하기)
Master DB → Standby DB (같은 리전의 다른 가용 영역)







Read Replica 생성하기 (다른 리전에 읽기 전용 복제본 생성하기)






MySQL Workbench 연결하기

Hostname으로 입력




WordPress의 MySQL 연결 정보 변경 : EC2 WordPress 인스턴스가 로컬 MySQL 서버가 아닌 RDS를 사용하도록 변경함
WordPress 인스턴스 접속
vim /opt/bitnami/wordpress/wp-config.php
vim 커맨드 모드(명령 실행), 입력 모드(텍스트 입력, i 키로 전환하고 ESC 키를 누르면 다시 커맨드 모드가 됨)
커맨드 모드에서 :q를 입력하면 나가기, :wq를 입력하면 저장하고 나가기
define('DB_USER', 'admin'), define('DB_PASSWORD', '비밀번호'), define('DB_HOST', '엔드포인트')로 수정


sudo service bitnami restart 명령어 실행







RDS 작동 테스트하기
기존 실행 중이던 EC2 인스턴스들은 자체 DB를 사용하므로 종료
이후 Auto Scaling 그룹의 최소 인스턴스 개수를 맞추기 위해 인스턴스가 자동으로 생성됨 (새로운 시작 템플릿으로 생성된 EC2 인스턴스)



실행 중인 인스턴스 중 하나를 선택하여 글 작성 (퍼블릭 IPv4 주소/admin 접속, 사용자 이름 user, 비밀번호 1234)
ELB의 DNS 이름으로 접속하여 새로고침해도 글이 항상 보임



📢 세 줄로 정리해보기!
1️⃣ RDS(Relational Database Service)는 관계형 데이터베이스 서비스로, 데이터베이스를 여러 대 복제하는 Replication을 기반으로 하며 이때 읽기 전용으로 만들어진 복제본을 Read Replica라고 한다.
2️⃣ RDS는 Master DB(Primary DB) 외에 Standby DB를 두는데, 장애가 발생하면 Standby DB로 읽기와 쓰기 작업을 진행하는 Failover를 수행한다. 이처럼 단일 지역의 2개 이상의 가용 영역에 걸쳐 데이터베이스를 구축하는 것을 다중 AZ(Multi-AZ)라고 부른다.
3️⃣ RDS를 만들 때는 우선 Master DB 인스턴스를 만들고, 다중 AZ 배포로 변환하여 Standby DB를 만든 다음, 다른 리전에 Read Replica를 생성할 수 있다. 한편 EC2 인스턴스가 RDS를 사용하게 하려면 EC2 인스턴스의 설정 파일과 RDS의 보안 규칙을 바꿔준다. (Auto Scaling이 설정되어 있다면 AMI, 시작 템플릿도 변경한다.)
참고 자료
└ 소플의 처음 만난 AWS
└ RDS 개념 & 아키텍쳐 정리 [이론편]
└ [AWS] RDS란 무엇인가?