AWS

AWS RDS를 이용하여 MySQL 사용하기

cjsrhd94 2022. 7. 7. 05:00

프로젝트를 진행하던중 DB를 어떻게 해야할지 고민이었다.

배포할 예정이 없는데 로컬 환경이 아닌 클라우드 환경에서 RDS를 사용하는 것이 큰 의미가 있을까 싶었다.

그럼에도 기술을 한 번 사용해보는 것이 개인적으로 도움이 될 것이라 생각해 프로젝트에 적용해보기로 하였다.

1. AWS RDS에 들어가 '데이터베이스 생성' 버튼을 누르면 위 화면으로 시작된다. 위와 같이 '표준 생성' - 'MySQL'을 선택해준다.

 

2. 템플릿은 반드시 '프리티어'를 설정해준다. 그래야 RDS 사용으로 인해 과금될 위험이 줄어들게 된다.

DB 인스턴스 식별자는 해당 RDS의 이름이다. 프로젝트와 관련 있는 이름으로 짓는 것이 향후 RDS에 접속했을 때 해당 인스턴스가 어떤 용도로 사용되고 있는 DB인지 확인하기 편하다.

자격 증명 설정의 마스터 사용자 이름과 마스터 암호는 RDS에 접근하는데 사용된다. 따라서 외부에 공개하면 안된다.

 

3. 인스턴스 구성에서 기본 제공되는 db.t3.micro를 사용하면 된다. 현재 기준 프리티어 사용자의 경우 db.t2.micro, db.t3.micro 또는 db.t4g.micro 인스턴스를 월 750시간까지 사용할 수 있다.

스토리지의 경우 스토리지 자동 조정이 기본으로 활성화 되어있는데, 체크를 해주어 기능을 비활성화 시키는 것이 과금 위험이 낮다.

 

4. 연결 부분에서 퍼블릭 액세스를 '예'로 바꿔준다. CLI로 외부에서 접근하기 위해 필요하다.

VPC 보안 그룹은 기존의 것을 사용해도 되고, 새로 생성해도 된다. 새로 생성한 보안 그룹은 향후 AWS에서 사용 가능하다.

가용 영역은 'ap'로 시작하는 것이 아시아 태평양 지역을 의미한다. 만약 가용 영역에 'ap'가 아닌 다른 지역이 보여진다면, 우상단의 헤더부분에 있는 지역을 '서울'로 바꿔주면 된다.

추가 구성의 데이터베이스 포트는 따로 설정해줄 수 있다. 3306은 MySQL에서 사용하는 기본 포트이다.

 

  5. 추가 구성에서 편의를 위해 초기 데이터베이스 이름을 설정해준다. 향후 DB를 직접 생성해주어도 상관없다.

  위의 단계를 끝마쳤다면 맨 하단의 '데이터베이스 생성' 버튼을 클릭한다. 몇분 지나면 데이터베이스가 활성화된다.

 

6. 데이터베이스 - 생성한 인스턴스를 클릭하면 위와 같은 화면이 나온다. 아까 새로 생성한 보안 그룹의 규칙을 수정해야하기 때문에 클릭해준다.

 

7. 인바운드 규칙 편집을 클릭 후 3306포트로 외부에서 접근할 수 있게 위와 같이 설정하고 규칙 저장 버튼을 누른다.

 

AWS에서 설정해줄 부분은 끝났다. 다음으로 인텔리제이에서 접속중인 RDS를 손쉽게 확인할 수 있는 방법에 대해 설명하려한다.

인텔리제이 우상단의 Database를 클릭하고 '+' 버튼을 클릭해 MySQL을 선택해준다. 그러면 위와 같은 화면이 나온다.

Name은 인텔리제이에서 확인할 수 있는 DB의 이름이다. 자유롭게 설정해주면 된다.

Host는 RDS 인스턴스의 엔드포인트를 넣어준다.

User는 RDS 인스턴스의 마스터 사용자 이름을 넣어준다.

Password는 RDS 인스턴스의 마스터 사용자 패스워드를 넣어준다.

Database는 아까 초기 구성에서 설정한 초기 데이터베이스 이름을 넣어준다. 만약 없다면 CLI로 접근하여 생성한 뒤 작성한다.

작성이 끝났다면, 아래의 Test Connection을 클릭해 연결이 성공했는지 확인한다.

마지막으로 서버를 띄울 때 어떤 DB에 연결하는지 properties 혹은 yml 파일에 알려줘야 한다. 위의 datasource 부분에 RDS와 관련된 정보들을 적어준다.

driver-class-name은 어떤 DB를 사용하는지 적어준다. MySQL의 경우 com.mysql.cj.jdbc.Driver를 적어준다.

url은 사용할 DB의 주소 정보를 적어준다. jdbc:mysql://엔드 포인트/DB 이름 과 같은 형태로 구성된다.

username은 RDS 인스턴스의 마스터 사용자 이름을 넣어준다.

password는 RDS 인스턴스의 마스터 사용자 패스워드를 넣어준다.

JPA를 사용하시는 분이라면, ddl-auto 옵션을 'create'로 주어 초기 테이블을 만들어 줄 수도 있다. 필자의 경우 설정 이후 첫 서버 실행때 테이블이 잘 생성되지 않는 문제가 있었고, 서버를 한번 더 실행해주었더니 정상적으로 테이블이 생성되었다.