[AWS] RDS (Relational Database Service) #6

­박찬영·2025년 2월 14일

AWS

목록 보기
6/15
post-thumbnail

📌 RDS


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 사용해보기


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

  • 인스턴스 생성 후 암호 반드시 복사해두기

  • 엔드포인트는 DB 인스턴스에 접속하기 위한 주소


DB 인스턴스를 다중 AZ 배포로 전환하기 (Standby DB 생성하기)

  • Master DB → Standby DB (같은 리전의 다른 가용 영역)

    • Master DB의 데이터는 Standby DB로 동기 복제가 이루어짐

  • 시간이 다소 걸린 후 확인 가능

  • DB 인스턴스 장애 조치로 재부팅하면 Standby DB가 Master DB로 승격이 되어 역할을 대신함


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

  • 다른 리전 선택하기


MySQL Workbench 연결하기

  • RDS DB 인스턴스의 엔드포인트를 Hostname으로 입력

  • 마스터 사용자 비밀번호 붙여넣기
  • 테스트 연결 (연결 실패 시 보안 그룹 규칙 확인하기)


  • WordPress DB 스키마 생성 쿼리문 실행


  • 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', '엔드포인트')로 수정


  • 새로운 AMI 생성 : 변경된 접속 정보를 갖고 있는 상태 저장

  • 이후 WordPress 인스턴스에서 sudo service bitnami restart 명령어 실행

  • RDS 보안 그룹 규칙 변경


  • 새로운 시작 템플릿 생성


  • Auto Scaling Group의 시작 템플릿 변경


RDS 작동 테스트하기

  • 기존 실행 중이던 EC2 인스턴스들은 자체 DB를 사용하므로 종료

  • 이후 Auto Scaling 그룹의 최소 인스턴스 개수를 맞추기 위해 인스턴스가 자동으로 생성됨 (새로운 시작 템플릿으로 생성된 EC2 인스턴스)

  • ELB의 DNS 이름으로 접속

  • 실행 중인 인스턴스 중 하나를 선택하여 글 작성 (퍼블릭 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란 무엇인가?

profile
Develop하는 개발자

0개의 댓글