[스프링] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - AWS에 데이터베이스 환경을 만들어보자 - AWS RDS

June·2021년 10월 15일
0

웹 서비스의 백엔드를 다룬다고 했을 때 애플리케이션 코드를 작성하는 것만큼 중요한 것이 데이터베이스를 다루는 일이다. 직접 데이터 베이스를 설치하는 것은 하지 않는다. 직접 설치하면 모니터링, 알람, 백업, HA 구성등을 모두 해야하고 처음 구축할 때 며칠이 걸릴 수 있다.

AWS에서는 앞서 언급한 것을 모두 지원하는 관리형 서비스인 RDS를 제공한다. RDS는 AWs에서 지원하는 클라우드 기반 관계형 데이터베이스이다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여 개발자가 개발에 집중 할 수 있게 지원하는 서비스다. 추가로 조정 가능한 용량을 지원하여 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 내면 정상적으로 서비스가 가능하다.

RDS 인스턴스 생성하기

MariaDB를 선택하자.

  • 가격
  • Amazon Aurora 교체 용이성

RDS의 가격은 라이센스 비용 영향을 받는다. 상용 데이터베이스인 오라클, MSSQL이 오픈 소스인 MySQL, MariaDB, PostgreSQL보다는 동일한 사양 대비 더 가격이 높다.

두 번째로 Amazon Aurora 교체 용이성이다. Amazon Aurora는 AWs에서 MySQL과 PostgreSQL을 클라우드 기반에 맞게 재구성한 데이터베이스이다. 공식 자료에 의하면 RDS MySQL 대비 5배, RDS PostgreSQL보다 3배 성능을 제공한다. 더군다가 AWS에서 직접 엔지니어링 하기 때문에 게속 발전하고 있다.

오픈소스 데이터베이스 중 가장 인기있는 것은 MySQL이다. 단순 쿼리 처리 성능이 어떤 제품보다 압도적이며 신뢰성이 있다. MySQL이 오라클에 합병되면서 MySQL 창시자인 몬티 와이드니어가 만든 프로젝트가 MariaDB이다.

MySQl을 기반으로 만들었기 떄문에 사용법이 유사하다. 그 외에도 장점이 있다.

  • 동일 하드웨어 사양으로 MySQL보다 향상된 성능
  • 더 활성화된 커뮤니티
  • 다양한 기능
  • 다양한 스토리지 엔진

"MySQL에서 MARIADB로 마이그레이션 해야 할 10가지 이유" 검색

마스터 사용자 이름과 비밀번호 지정
퍼블릭 액세스 가능으로 설정할 것

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

타임존

파라미터 그룹 -> 파라미터 그룹 생성

Character Set

utf8과 utf8mb4의 차이는 이모지 저장 가능 여부이다. utf8은 이모지를 저장할 수 없다.

Max Connection

데이터 베이스 -> (내 db 선택) -> 수정 -> db 파라미터 그룹 -> (방금 만든 것) -> 즉시적용 -> 재부팅

내 PC에서 RDS네 접속해보기

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

보안 그룹 -> VPC 보안 그룹
새로 브라우저 열어서 EC2에 사용된 보안 그룹의 그룹 ID 복사

복사된 보안 그룹 ID와 본인의 IP를 RDS 보안 그룹의 인바운드추가

  • 보안 그룹 첫 번쨰 줄: 현재 내 PC IP
  • 두 번째 줄: EC2 qhdks rmfnq cnrk

이렇게 하면 EC2와 RDS간에 접근 가능

Database 플러그인 설치

RDS의 엔트포인트 및 포트에 가서 엔드포인트를 복사한다.

인텔리제이 재시작후 Action 검색 (Ctrl + shift + a)
Database Browser 검색
왼쪽 플러스 누르고 MySQL

여기서 오류가 생겼는데 이것을 보고 해결했다

여기서 +를 누르고 Query Console 선택

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

show variables like "c%";

데이터베이스가 선택된 상태에서 현재의 character_set, collation 설정을 확인한다.

latin1이 적용된 것들이 있다. 바꿔줘야한다.

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

select @@time_zone, now();

타임존을 확인한다.

EC2에서 RDS에서 접근 확인

putty에서

sudo yum install mysql

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

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

0개의 댓글