본문 바로가기
스프링부트와 AWS로 혼자 구현하는 웹서비스

AWS에 데이터베이스 환경 구축 - 내 PC에서 RDS 접속과 RDS와 EC2의 연동 확인

by 초이사 2023. 3. 15.

이 글은 '스프링부트와 AWS로 혼자 구현하는 웹 서비스 - 이동욱(jojoldu)'을 공부하며 작성한 글로 생략된 내용은 책을 구매해서 확인하는 것을 권장합니다.

참고 소스코드 깃허브 https://github.com/jojoldu/freelec-springboot2-webservice

http://www.yes24.com/Product/Goods/83849117

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - YES24

가장 빠르고 쉽게 웹 서비스의 모든 과정을 경험한다. 경험이 실력이 되는 순간!이 책은 제목 그대로 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링

www.yes24.com

 

책의 7장에서 내 PC에서 RDS 접속을 하는 과정(인텔리제이 커뮤니티 버전 데이터베이스 연동 등)과 RDS와 EC2 연동 확인에 대해 정리한 글입니다.

 

 

내 PC에서 RDS 접속

1. RDS의 보안 그룹에 내 PC의 IP 추가

  1-1. 데이터베이스 이름 클릭(세부 정보로 이동) -> VPC 보안그룹 항목 클릭 

  1-2. EC2에 사용된 보안그룹의 그룹ID 복사 

 

  1-3. RDS 보안그룹을 선택(1-1에서 선택한 보안 그룹)하고 인바운드 규칙 편집 클릭 -> 아래와 같이 수정 -> 변경사항 저장

*복사한 그룹ID가 있는 그룹이 아닌 RDS 보안그룹이다. 복사한 그룹ID가 있는 그룹의 인바운드 규칙을 편집하면 인텔리제이에서 Connection이 실패한다. 경험담이다.

인바운드 규칙 추가

인바운드 규칙 유형으로 MySQL/Aurora 선택시 자동으로 3306 포트가 선택된다.

위와 같이 하면 EC2와 RDS간에 접근이 가능해진다.

EC2는 하나의 서버이기 때문에 EC2에서 접근할 때, EDS 보안 그룹의 인바운드 규칙을 추가해주어야 한다.

EC2를 하나만 사용한다면 해당 인스턴스의 IP만 추가하면 되지만, 이후에 2대, 3대가 되면 매번 추가하기에는 불편함이 있다.

-> RDS 보안 그룹의 인바운드 규칙에 EC2 인스턴스의 보안 그룹 id를 추가하여 보안 그룹간의 연동을 진행한다.

 

 

 

Database 플러그인 설치

로컬에서 원격 데이터베이스로 붙을 때, GUI 클라이언트를 많이 사용하는데, MySQL의 대표적인 클라이언트로는 Workbench, SQLyog(유료), Sequel Pro(맥 전용), DataGrip(유료)등이 있다.

본인이 선호하는 틀을 사용하면 된다.

여기서는 인텔리제이에 Database 플러그인을 설치해서 진행한다.

* 인텔리제이의 공식 플러그인은 아니다. 인텔리제이 유료 버전을 사용하면 공식적으로 더 강력한 기능의 데이터베이스 기능 사용 가능

 

1. RDS 정보 페이지 -> 만든 데이터베이스 이름 클릭 -> 연결 &보안에서 엔드포인트 확인 (접근 가능한 URL로 메모해두자!)

 

엔드 포인트

2. 인텔리제이 -> Plugins -> database 검색 후 설치

 

3. 설치후 인텔리제이 재시작 -> Action 검색 -> Database Browser 실행 -> + -> MySQL 클릭

Action 검색 단축키

  • 맥 : Command + Shift + a
  • 윈도우/리눅스 : Ctrl +Shift + a

MariaDB는 MySQL 기반이므로 MySQL을 사용하면 된다.

 

4. RDS 접속 정보 직성 -> Test Connection -> Connection Successful 메시지 -> Apply -> Ok

아래처럼 본인의 RDS 접속 정보를 작성한다.

Host에는 앞에서 확인해둔 엔드포인트를 등록하면 된다.

RDS 접속 정보 등록
Test Connection 성공
RDS의 스키마가 노출된 모습

 

5. Open SQL Console(아래 이미지 노란 동그라미) -> New SQL Console 선택 -> Console name 작성 및 create 

RDS의 스키마가 노출된 모습

 

6. 생성한 콘솔창에서 아래 쿼리 문을 작성 및 드래그로 선택 -> 위쪽에 있는 화살표(Execute Statement) 클릭

생성한 콘솔창에서 쿼리가 수행될 데이터베이스 선택하는 쿼리 실행

use AWS RDS 웹 콘솔에서 지정한 데이터베이스명;

쿼리가 실행될 database를 선택하는 쿼리문

springboot-webservice가 아닌 springboot_webservice이다. RDS 생성시 database명에 '-'를 사용할 수 없어 _로 작성한 것을 잊지 말자!

아래처럼 결과가 나오면 쿼리가 정상적으로 수행된 것이다.

뭐리가 정상적으로 수행되었다는 의미

 

7. 데이터베이스가 선택된 상태에서 character_set, collation, 타임존 설정 적용되었는지 확인

  7-1. 아래 쿼리문으로 현재 설정 확인

show variables like 'c%';

실행 결과

위 결과를 보면 character_set_database, collation_connection 2가지 항목은 이전에 설정한 utf8mb4이 아닌 latin1로 되어있다. 

위 2개의 항목은 MariaDB에서만 RDS 파라미터 그룹으로는 변경이 안된다.

-> 직접 변경해줘야 한다.

 

 7-2. 직접 변경하기 위해 아래 쿼리문 실행

ALTER DATABASE springboot_webservice
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci';

위 쿼리문 실행 후 다시 설정을 확인하면

직접 수정 후 실행결과

2가지 항목이 잘 변경된 것을 확인할 수 있다.

 

  7-3. 타임존 확인

select @@time_zone, now();

실행해보면 Asia/Seoul로 잘 적용된 것을 확인할 수 있다.

 

8. 한글명 데이터가 잘 들어가는 지 확인

아래 쿼리문 차례대로 실행

* 테이블은 만들어질 당시에 설정값을 그대로 유지하고 있어, 자동 변경이 되지 않고 강제로 변경해주어야 한다.

-> 테이블은 모든 설정이 끝난 후 생성하는 것을 추천!

CREATE TABLE test (
    id bigint(20) NOT NULL AUTO_INCREMENT,
    content varchar(255) DEFAULT NULL,
    PRIMARY KEY(id)
) ENGINE=InnoDB;

insert into test(content) values ('한글테스트');

select * from test;

한글 데이터 등록 성공

 

 

 

EC2에서 RDS에서 접근 확인 (연동 잘되었는지 체크)

6장 부분에서 진행한 대로 EC2에 ssh 접속 진행

putty 실행 -> springboot-webservice 선택 -> open

 

MySQL 접근 테스트를 위해 MySQL CLI 설치

*실제 ec2의 MySQL을 설치해서 쓰는게 아닌 명령어 라인만을 쓰기 위해 설

sudo yum install mysql

 

설치가 완료되면

mysql -u 계정 -p -h Host주소

명령어를 실행하고 password 입력후 엔터를 치면 아래 이미지와 같이 나온다.

실행 결과  - RDS 접속 완료

RDS에 접속되었으니 실제 생성한 RDS가 맞는지 데이터베이스 목록 확인

show databases;

데이터베이스 목록 확인

생성했던 springboot_webservice라는 데이터베이스가 있는 것을 확인할 수 있다.

댓글