AWS RDS, Cloud SQL

Haechan Kim·2023년 3월 14일
0

Spring

목록 보기
33/68
post-custom-banner

AWS RDS

RDS란?
Relation Data Service의 약자로, AWS에서 제공하는 rdb 서비스이다.

AWS에서 EC2를 구축했을 때 EC2안에 db(mysql)을 설치하고 사용할 수도 있지만, EC2에 문제가 생기면 db에도 접근하지 못한다는 등의 문제가 발생할 수 있다.
따라서 기본 서버와 db 서버를 분리해 관리하는 것이 보안과 관리, 편리성에 좋다.
AWS는 이를 위해 RDS라는 서버를 제공하여, RDS 인스턴스를 구축해 사용할 수 있다.
db를 생성하고 EC2와 연결해야 하는데, db 생성 시 생성한 VPC 보안 그룹의 인바운드 규칙에서 접근 가능한 ip를 설정한다. 이렇게 하므로써 EC2가 RDS에 접근이 가능해진다.

외부에서 RDS에 접근하기 위해서는 Datagrip 또는 mysql Workbench 등을 사용한다.

Hostname에 RDS의 엔드포인트를 넣고 설정한 username과 password를 입력한다.

Spring Boot와 RDS를 연동하기 위해

  1. build.grale 설정을 해준다.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'mysql:mysql-connector-java'
  1. application.properties 설정
spring.datasource.url=jdbc:mysql://${RDS_HOSTNAME}:3306/${RDS_DB_NAME}
spring.datasource.username=${RDS_USERNAME}
spring.datasource.password=${RDS_PASSWORD}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.jpa.database=mysql
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

ddl-auto 옵션

Cloud SQL

GDSC 솔루션 챌린지를 진행하기 위해 AWS RDS가 아닌 GCP Cloud SQL을 사용하게 되었다. RDS와 비슷한 역할을 한다.
mysql 인스턴스를 만들고 리전 설정과 과금을 최소화 하기 위해 맞춤 설정을 진행한다.
생성 후 바로 Workbench로 접속을 시도하면 접속이 되지 않는다.

cloud shell을 열고 연결에 이상이 없는지 확인한다.

이상이 없으니 접속하고자 하는 컴퓨터의 public ip 또는 모든 ip (0.0.0.0/0)을 입력한다.

접속이 잘 되는것을 확인할 수 있다.

application.properties는 다음과 같이 설정한다.

spring.datasource.url=~:3306/${생성한 schema 이름}?useSSL=~

spring.datasource.url=jdbc:mysql://34.22.xx.xx:3306/guessme?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=guessme
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.datasource.hikari.connection-test-query=select 1 from dual

spring.jpa.database=mysql
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

<참고>
https://velog.io/@u-nij/Spring-Boot-AWS-RDS-MySQL-연동하기
https://velog.io/@alskfl/GCP-SQL-써보기-TIL-1
https://aircook.tistory.com/entry/Cloud-SQL-in-GCP
https://coding-is-fun.tistory.com/9
https://coding-is-fun.tistory.com/10

post-custom-banner

0개의 댓글