AWS RDS란?

Relational Database Service으로, 데이터베이스를 AWS 인스턴스로 올려서 원격으로 접속 가능하게 하는 서비스이다. 

보통은 AWS EC2나 S3을 사용해서 서버 인스턴스를 배포하거나 파일을 저장하는 용도로 사용하지만, RDS를 사용하면 DB를 원격으로 접근 가능하게 할 수 있다. 

 

이번에 RDS를 쓴 이유도 같은 DB 스키마를 가지고 협업할 때 공통으로 접근할 수 있는 DB가 있으면 좋을 것 같아서였다. 

각자 로컬에 DB를 만들고 마이그레이션해도 되지만, 그러다가 DB가 꼬일 수도 있기 때문이다. 

 

AWS RDS와 스프링 서버를 연결하는 방법은 총 두 단계이다. 

1. AWS RDS 인스턴스 시작

2. 스프링 서버 설정 변경

 

이중 1번 과정에서는 한 유튜브 영상을 참고해서 진행하였다. 

 

AWS RDS 인스턴스 시작

우선 AWS RDS 페이지에 접속하거나 aws rds를 검색한다. 

데이터베이스 생성 버튼을 누른다. 

 

데이터베이스 생성 방법에 정답이나 매뉴얼은 없지만, 내가 한 방식을 그대로 올려보겠다. 

(모든 항목 내용은 없고, 변경한 부분 위주로 올려보겠다.)

 

 

엔진 옵션-엔진 유형: MySQL.

어떤 데이터베이스를 사용할지 정한다. 

 

엔진 옵션-엔진 버전: MySQL 8.0.32

해당 버전이 DB 버전이 된다.

 

템플릿: 프리 티어

프리 티어를 제외한 프로덕션과 개발/테스트는 모두 사용 시 요금이 부과된다. 

 

설정-DB 인스턴스 식별자

DB 이름을 입력한다. 각 DB 인스턴스에 고유한 이름을 붙여준다고 생각하면 된다. 

 

설정-마스터 사용자 이름

DB에 접근하기 위해서 아이디(유저 이름)와 비밀번호를 요구하는데, 이중 아이디 영역이다. 이후 MySQL Workbench와 스프링 설정 변경에서 사용된다. 

 

설정-마스터 암호

DB에 접근하기 위해서 필요한 비밀번호이다. 이후 MySQL Workbench 설정과 스프링 설정 변경 시 사용된다. 

 

인스턴스 구성-DB 인스턴스 클래스

DB 인스턴스를 어떤 타입으로 할지를 정의하며, 나는 기본값인 db.t3.micro를 선택했다. 

 

앞서 요금이 나오지 않는 프리 티어를 사용했는데, 프리티어도 사용 제한이 있다. 

총 750시간 이상 사용하거나, 사용한 지 12개월이 지난 경우부터는 과금이 되므로 주의하자!

 

어쨌든 이 과정을 완료하면 RDS DB 인스턴스가 생성된다. 생성 과정은 몇 분이 걸린다. 

이 과정을 완료하고 DB가 실행되면 다음과 같은 화면이 나온다. 

 

 

DB 식별자를 눌러서 상세보기를 하면, DB 인스턴스에 접근할 수 있는 URL이 나온다. 이 URL과 아까의 유저 이름, 비밀번호를 통해서 DB에 접근할 수 있다. 

 

✅스프링 서버 설정 변경

앞서 설정한 엔드포인트, 포트 번호, 유저 이름, 비밀번호를 사용해서 설정을 변경하면 된다. 

application.properties 파일에서 다음 내용만 바꾸자. 

spring.datasource.url=jdbc:mysql://{$endpoint}:{$port}/{$schema_name}
spring.datasource.username={$username}
spring.datasource.password={$password}

 

$schema_name에는 해당 전체 DB의 database들 중 사용하고 싶은 database의 이름을 적어주면 된다. 

 

 

참고한 포스트

https://chung-develop.tistory.com/18

https://stackoverflow.com/questions/50837960/spring-boot-connection-to-mysql-remote-database

https://deeplify.dev/database/troubleshoot/unknown-initial-character-set-index

https://stackoverflow.com/questions/50855622/unknown-initial-character-set-index-255-received-from-server

https://zel0rd.tistory.com/141

https://velog.io/@dongzooo/My-sql-workbench-%EC%97%90%EB%9F%AC%ED%95%B4%EA%B2%B0-could-not-acquire-management-access-for-administration

+ Recent posts