AWS RDS 데이터베이스 설정

1. 사전 준비

RDS 생성을 한 후 EC2 인스턴스와 연결하기 위해서는 약간의 사전 준비가 필요하다. RDS 생성 과정에서도 설정할 수 있으나 번거롭기 때문에 미리 작업해두고 생성할 예정이다.

  1. DB 보안 그룹 생성

  2. DB 서브넷 그룹 생성

  3. 파라미터 그룹 생성 및 설정

png

사전 준비를 위해서는 EC2 인스턴스 정보를 알아야 한다. 먼저 EC2 대시보드에서 RDS와 연결할 EC2 인스턴스 VPC ID서브넷 ID를 확인하자.

png

그 다음 보안 그룹에서 RDS와 연결할 EC2 인스턴스의 보안 그룹 ID를 확인한다.

1.1. DB 보안 그룹 생성

DB 보안 그룹은 EC2 인스턴스와 통합 관리된다. EC2 대시보드에서 보안그룹 생성버튼을 눌러 새로운 보안 그룹을 생성한다.

png
  • VPC: 연결할 EC2 인스턴스의 VPC ID

  • 인바운드 규칙1

    • 유형: DB에 따른 트래픽 유형 선택

    • 소스: 내 IP

  • 인바운드 규칙2

    • 유형: DB에 따른 트래픽 유형 선택

    • 소스: EC2 인스턴스 보안 그룹 검색 후 선택

  • 아웃바운드 규칙

    • 유형: 모든 트래픽

    • 대상: 전체(IPv4)

위와 같이 설정 후 보안 그룹을 생성한다.

1.2. DB 서브넷 그룹 생성

png

DB 서브넷 그룹은 RDS 대시보드에서 생성할 수 있다. 서비스 ➜ 데이터베이스 ➜ RDS를 클릭하면 RDS 대시보드로 이동한다.

png

서브넷 그룹 대시보드에서 DB 서브넷 그룹 생성 버튼을 클릭하면 새로운 서브넷 그룹을 생성한다.

png

여기서 VPC는 연결할 EC2 인스턴스의 VPC ID를 선택한다. 서브넷 추가는 EC2 가용영역에 있는 모든 서브넷을 추가하면 된다.

1.3. 파라미터 그룹 생성 및 설정

png

파라미터 그룹은 EC2 인스턴스와 마찬가지로 RDS 대시보드에 있다. 파라미터 그룹 생성 버튼을 클릭하면 새로운 파라미터 그룹을 생성한다.

png

RDS 엔진에 맞게 파라미터 그룹 패밀리를 선택하고 생성하면 된다.

  1. 값이 char: utf8 설정

  2. 이름 일부가 collation: utf8_general_ci 설정

  3. 이름 일부가 zone: Asia/Seoul 설정

생성한 파라미터 그룹은 편집을 통해 값을 수정할 수 있다. 위와 같이 설정하면 DB 시간을 한국으로 설정하고 한글 사용이 가능하다.

2. RDS 세팅

png

콘솔 홈에서 가장 먼저 할 것은 우측 상단의 지역을 서울로 변경하는 것이다. 지역을 서울로 변경한 후 서비스 ➜ 데이터베이스 ➜ RDS를 클릭하면 RDS 대시보드로 이동한다.

png

RDS 대시보드에서 데이터베이스 생성 버튼을 클릭하면 RDS 세팅 화면으로 이동한다.

png

데이터베이스 생성 화면에서는 내가 만들 데이터베이스의 스펙을 결정할 수 있다.

2.1. 데이터베이스 생성 방식 선택

png

데이터베이스 생성 방식을 선택한다. 나는 프로젝트에 맞게 구성 옵션을 선택할 예정이므로 표준 생성 옵션을 선택했다.

2.2. 엔진 옵션

png

엔진 옵션에서는 데이터베이스를 선택할 수 있다. 7개의 옵션 중 자신의 프로젝트에 알맞은 DB를 선택하면 된다. 나는 프리티어를 사용할 예정이므로 Aurora, Oracle은 선택지에서 제외되었다. MySQL, MariaDB, PostgrSQL, Microsoft SQL Server 중 하나를 골라야 했다. AWS의 공식 문서에 따르면 주로 데이터를 읽고 사용하는 애플리케이션인 경우 MySQL, 쓰기 작업이 빈번하고 동시에 수행되는 경우 PostgreSQL이 뛰어나다고 한다(link). 내 프로젝트는 일반적으로 읽기 작업이 훨씬 많을 것으로 예상되기 때문에 엔진 유형으로 MySQL을 선택했다. 추후 요구사항이 변경되고 이전 필요하면 postgreSQL을 고려할 예정이다. 엔진 버전은 로컬에 설치한 MySQL 버전과 일치하도록 MySQL 8.0.34를 선택했다.

2.3. 템플릿

png

프리 티어를 사용할 예정이므로 프리 티어를 선택했다.

2.4. 가용성 및 내구성

png

프리 티어의 경우 배포 옵션 설정이 불가능하다.

2.5. 설정

png

설정에서는 데이터베이스 이름과 마스터 사용자 이름, 암호 등을 설정할 수 있다. 암호는 기억할 수 있는 범위에서 잘 설정해두자.

2.6. 인스턴스 구성

png

인스턴스 구성에서는 데이터베이스 사양을 결정할 수 있다. 프리 티어의 경우 단일 AZ db.t2.micro, db.t3.micro 또는 db.t4g.micro 인스턴스를 선택할 수 있다. 나는 db.t3.micro를 선택했다.

2.7. 스토리지

png

스토리지에서는 인스턴스 공간을 설정할 수 있다. 프리티어의 경우 20GB의 범용 스토리지(SSD)를 제공하는데 최솟값이 20GiB이므로 그냥 20GiB로 설정했다. 하단의 스토리지 자동 조정 옵션이 활성화되어 있는지 꼭 확인하자. 자동 조정 옵션이 활성화되어 있는 경우 지정한 임계값을 초과혀면 스토리지가 늘어난다. 나는 스토리지 자동 조정 옵션을 비활성화했다.

2.8. 연결

png

연결에서는 RDS 네트워크 관련 설정을 할 수 있다. EC2 컴퓨팅 리소스에 연결하는 옵션을 선택하면 자동적으로 관련 보안 그룹이 추가된다. 나는 기존의 보안 그룹을 활용할 예정이라 연결하지 않았다. 또한 외부에서도 MySQL에 접속할 수 있도록 퍼블릭 액세스를 허용했다.

보안 그룹은 기존 항목을 선택할 수도 있고 새로 생성할 수도 있다. 나는 기존에 만들어 둔 보안 그룹이 있어 기존 항목을 선택했다.

2.9. 데이터베이스 인증

png

데이터베이스 인증에서는 DB 엔진의 인증 방식을 결정할 수 있다. 나는 기본적인 암호 인증을 선택했다.

2.10. 모니터링

png

필요한 경우 모니터링 옵션을 활성화할 수 있다. 나는 지금 단계에서 필요하지 않다고 판단해서 비활성화했다.

2.11. 추가 구성

png

추가 구성에서는 데이터베이스의 기타 옵션을 설정할 수 있다. 나는 자동 백업과 마이너 버전 자동 업그레이드를 비활성화했다.

png

모든 세팅이 끝나고 데이터베이스 생성 버튼을 누르면 RDS가 생성된다.

3. 터미널에서 MySQL 접속 후 확인

RDS를 생성한 후 생성한 데이터베이스의 대시보드에 들어가면 엔드포인트를 확인할 수 있다. 이 엔드포인트를 활용해서 터미널에서 RDS에 접속할 수 있다.

# ==============================================================================
# 1. 엔드포인트로 RDS 접속
# ==============================================================================
# 터미널에 아래 명령어 입력 후 엔터
mysql -h rds-endpoint -u 마스터-사용자-이름 -p
password:

터미널로 RDS에 접속할 수 있다면 똑같은 방법을 EC2 인스턴스에서도 동일하게 실행되는지 확인해보자.

참고 자료

Last updated