개발 공부

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 7장 - AWS RDS 본문

Spring/Spring Boot

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

hyecozy 2022. 9. 1. 15:07

6장 정리글

https://paradiseiswhereiam.tistory.com/139

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 6장 - AWS 서버 환경 만들기 (AWS EC2)

5장 정리글 https://paradiseiswhereiam.tistory.com/138 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 5장 - 책 보면서 다른 부분, 이해 안돼서 찾아본 부 4장 정리글 https://paradiseiswhereiam.tistory.com/1..

paradiseiswhereiam.tistory.com

 

 

AWS에서는 관계형 데이터 베이스를 지원한다. 

하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 지원하는 서비스이며, 비용만 내면 추가로 데이터 용량을 조정할 수 있다.

 

RDS 인스턴스 생성하기

➡️RDS에 들어가서 데이터 베이스 생성을 클릭한다.

 

 

➡️그리고 MariaDB 클릭

순간 렉이었는지 MariaDB가 안 떠서 설마 이제 마리아DB는 사용할 수 없나? 했는데 홈페이지 RDS 소개란에 버젓이 MariaDB에 대한 이야기가 있는 걸 보고 다시 들어가봤더니 뜸

✔️이 책에서 MariaDB를 고르는 이유

- 가격

: 오라클이나 MSSQL은 동일한 사양 대비 더 가격이 높은 편이다. 

- Amazon Aurora(오로라) 교체 용이성

: 아마존 오로라는 MySQL과 PostgreSQL을 클라우드 기반에 맞게 재구성한 DB이다. 클라우드 기반에 맞게 재구성한 DB이므로, 성능도 n배 가량 좋으며 AWS에서 직접 엔지니어링을 하고 있기 때문에 계속 발전하고 있다.

그렇기 때문에 호환되는 대상이 아닌 MSSQL과 오라클은 제외됐다.

- 동일 하드웨어 사양으로 MySQL보다 향상된 성능

- 좀 더 활성화된 커뮤니티

- 다양한 기능과 다양한 스토리지 엔진

 

 

➡️프리티어 선택 후 아래 정보를 입력한다.

암호에는 슬래시, 작은따옴표, 큰따옴표, @는 쓸 수 없다

 

 

➡️스토리지 설정

책과 똑같이 해주었다.

 

➡️책과 조금 화면이 달랐는데 퍼블릭 액세스만 예로 바꿔준 후 다음으로 넘어갔다

 

 

이름 수정 후

맨아래 암호화는 혹시나 해서 체크를 풀고 넘어갔다

 

 

➡️ 쭉 내려서 데이터베이스 생성 클릭하면 이런 화면이 뜬다

생성을 끝마쳤으니 이제 설정을 하면 된다

 

 

RDS 운영환경에 맞는 파라미터 설정하기

RDS를 처음 생성할 때 필수로 해야 하는 설정

- 타임존

- Character Set

- Max Connection

 

 

 

 

 

➡️순서대로 해서 생성해준다. 파라미터 그룹 패밀리는 위에서 생성한 MariaDB와 같은 버전으로 맞춰야 함

생성하고 나면 파라미터 그룹에 방금 만든 파라미터 그룹이 목록에 떠 있는 걸 볼 수 있다.

그 그룹명을 클릭해서 파라미터 편집을 다시 클릭한다.

 

➡️time_zone을 검색하면 저렇게 결과가 바로 뜬다 옆의 셀렉트를 눌러서 Asia/Seoul을 선택한다.

 

➡️그리고 Character Set을 변경할 건데, Character을 검색해서

이 항목들을 전부 utf8mb4로 바꿔준다. (utf8mb4는 선택지 제일 아래에 있다 참고)

 

➡️위와 같은 느낌으로 이번에는 Collation을 검색해서

collation_connection과 collation_server을 utf8mb4_general_ci로 변경한다.

 

✔️utf8과 utf8mb4의 차이는 이모지 저장 여부이다.

 

➡️마지막으로 max connections를 검색해서 150으로 설정한다.

그다음 변경 사항 저장을 클릭하고 데이터베이스 메뉴로 돌아간다

 

생성한 파라미터 그룹을 데이터베이스에 연결하는 작업을 시작한다.

 

➡️스크롤을 내리다 보면 추가 구성 파트에서 DB 파라미터 그룹을 바꿀 수 있게 되어 있다.

선택지에 방금 만든 파라미터 그룹이 있으므로 선택해 준다.

 

➡️그리고 다음으로 넘어가서 수정 사항 적용 시간을 즉시로 바꾸어 준 후 수정 버튼을 클릭한다.

 

➡️그럼 이렇게 상태에 수정 중 표시가 뜬다. 만약 안 뜬다면 위의 작업 버튼을 눌려 재부팅을 시도해 보자.

 

 

내 PC에서 RDS에 접속해 보기

로컬 PC에서 RDS로 접근하기 위해 RDS의 보안 그룹에 본인 PC의 IP를 추가하자.

 

➡️데이터베이스에 우리가 생성한 RDS 이름을 클릭하여 세부 정보 페이지로 이동한다.

저 그룹 페이지를 새 브라우저로 열어서 인바운드 규칙 페이지를 연다.

 

➡️전에 본인이 설정한 그룹 이름의 보안 그룹 ID를 복사한다.

 

➡️그리고 아래의 인바운드 규칙에서 편집 화면을 열어서 위와 같이 추가해 주고, 복사한 보안 그룹 ID를 붙여 넣어준 후, EC2라는 설명까지 적어준다. 그 아래는 사용자 지정이 아닌 내 IP로 설정한 상태이다.

 

Database 플러그인 설치

 

로컬에서 원격 DB로 붙을 때 GUI 클라이언트를 많이 사용한다. ex Workbench, SQLyog, Sequel Pro, DataGrip 등이 있다.

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

 

데이터베이스 페이지로 들어가서 

➡️엔드포인트를 확인한다.

이 엔드포인트가 접근 가능한 URL이므로 메모장에 복사해 둔다.

 

 

➡️인텔리제이를 열어서 위와 같이 플러그인을 검색하여 Database Navigator을 Install한다.

다운로드 했다면 인텔리제이 재시작을 한 뒤 Action 검색으로 Database Browser를 실행한다.

Action 검색
- 윈도우/리눅스: Ctrl + Shift + a
- 맥OS: Command + Shift + a

 

그럼 옆에 DB Browser이 생겨있다. 저 탭을 클릭한 후 + 버튼을 눌러서 MySQL 접속 정보를 열어본다.

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

 

 

연결 완료!

 

그럼 다음과 같이 RDS의 스키마가 노출된다.

저 파란 체크의 Open SQL Console 버튼을 클릭하고 New SQL Console을 선택해서 SQL을 실행할 콘솔창을 열어보자.

 

이름을 지정하고 (나는 책처럼 freelec이라고 함) 나면 오른쪽에 쿼리를 작성한다.

 

 

use (AWS RDS 웹콘솔에서 지정한 DB명);

캡처에는 ;이 없지만 ;까지 적기!

웹 콘솔에서 지정한 DB의 이름이 기억 안난다면 스키마 디렉토리를 찾아보면 나온다 (파란색 화살표 참고

그리고 위의 초록색 버튼 (Execute statement) 눌러주고

아래의 콘솔 창에 SQL statement executed successfully라고 뜨면 성공!

 

그 다음은

show variables like 'c%';

을 작성 후, 해당 쿼리를 드래그한 상태에서 수행해 보면

 

character_set_database와 collation_connection이 latin1로 설정되어 있다.

이 2개의 항목이 마리아 DB엥서만 RDS 파라미터 그룹으로는 변경이 안 된다. 그래서 직접 변경해야 한다.

 

alter database (DB이름)
character set ='utf8mb4'
collate = 'utf8mb4_general_ci';

잘 변경되었다.

✔️저 중에 몇개 utf8mb4로 변경되지 않은 게 있는데, 그거는 아마존 RDS의 데이터베이스로 들어가 해당 DB를 재부팅 해주면 해결된다!

 

그다음 타임존까지 아래 쿼리로 확인해 보자.

select @@time_zone, now();

 

서울의 시간이 뜬다! 성공

 

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;

이번엔 위의 쿼리를 차례대로 실행 시켜 본다.

한글명이 잘 들어가는지 확인하기 위한 간단한 테이블 생성과 insert 쿼리문이다.

콘솔창에 테스트가 잘 뜬다. 성공!

 

EC2에서 RDS에서 접근 확인

https://paradiseiswhereiam.tistory.com/140

 

[문제해결] AWS Connection timed out

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 7장 p291 공부하던 중 EC2에 SSH 접속에 실패했다. 오류는 제목과 같이 Network error : Connection timed out 이라는 오류가 났다 ^^.... 이 오류는 해당 DNS 주소..

paradiseiswhereiam.tistory.com

잠깐 오류 수정 타임 갖고~

 

 sudo yum install mysql

를 화면에 입력하면 MySQL CLI가 설치된다.

(실제 EC2의 MySQL을 설치해서 쓰는 게 아니고 명령어 라인만 쓰기 위한 설치)

➡️MySQL CLI 설치 완료

 

mysql -u 계정 -p Host주소

➡️로컬에서 접근하듯이 계정, 비밀번호, 호스트 주소를 사용해 RDS에 접속한다.

계정은 인텔리제이 DB 브라우저에서 썼던 그 아이디를 적으면 되고 호스트 주소는 엔드포인트를 입력해주면 된다.

만약 ERROR 2003 (HY000): Can't connect to MySQL server on (110) 와 같은 에러가 떴다면.. 보안그룹 (방화벽)의 허용 서버들을 다시 한번 더 체크해 보길 바란다......

 

잘 실행되는지 확인하기 위해 간단한 쿼리를 실행해 본다.

 

show databases;

잘 된다 ... ^^ 

하............................ 드디어 7장 끝!!!

Comments