AWS에 DB 환경 만들기(AWS RDS) - 루타블의 개발일기

김주영·2022년 7월 19일
0

[본 글은 프로젝트 과정을 기록할 목적으로 작성되었으며 아래 교재에 기반하여 작성됨]

🌱 RDS(Relational Database Service)


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

🌿 RDS 인스턴스 생성

🔧 amazon 로그인 후 검색창에 rds 검색

🔧 대시보드 화면 이동

🔧 DB 생성 클릭

🔧 DB 엔진 옵션 선택 화면에서 MariaDB 선택
🔧 DB 엔진 옵션 선택 화면에서 MySQL 선택

쿼리문 인식 문제 및 연결 등 여러 문제들이 해결되지 않아 MySQL로 수정

🔧 (중요)템플릿은 프리 티어로 한다.

🔧 본인만의 DB 인스턴스 이름과 사용자 정보를 등록한다.

여기서 사용된 사용자 정보로 실제 DB에 접근하게 되니 메모해두자.

🔧 인스턴스 구성에서 DM 인스턴스 클래스를 db.t2.micro로 했다.

🔧 스토리지 항목은 기본 설정으로 진행했다.

🔧 네트워크에선 퍼블릭 액세스를 [예]로 변경하고, 이후 보안 그룹에서 지정된 IP만 접근하도록 막을 예정이다.

🔧 DB 옵션에서 이름을 제외한 나머지 정보를 기본 상태로 진행 후 DB 생성 클릭

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

RDS를 처음 생성하면 다음 설정을 필수로 해야 한다.

  • 타임존
  • Character Set
  • Max Connection

🔧 왼쪽 카테고리에서 [파라미터 그룹] 선택

🔧 우측 상단 [파라미터 그룹 생성] 클릭

🔧 다음과 같이 세부 정보를 입력한다. 여기서 주의할 점은 방금 생성한 MySQL DB와 같은 버전을 맞춰야 한다는 것이다.

🔧 생성한 파라미터 그룹을 선택하여 상세 페이지로 이동 후 [파라미터 편집] 버튼을 클릭하여 편집 모드로 전환

🔧 먼저 time_zone을 검색하여 다음과 같은 [Asia/Seoul] 선택

🔧 character_set으로 시작하는 항목들은 모두 utf8mb4로 변경하고, collation 항목들은 utf8mb4_general_ci로 변경

참고로 utf8과 utf8mb4의 차이는 이모지 저장 가능 여부다.

RDS의 Max Connection은 인스턴스 사양에 따라 자동으로 정해진다. 현재 프리티어 사양으로는 약 60개의 커넥션만 가능해서 좀 더 넉넉한 값으로 지정한다.

🔧 Max Connection을 150으로 수정

🔧 설정이 다 되었다면 오른쪽 위의 [변경 사항 저장] 버튼을 클릭해 최종 저장한다.

🌿 파라미터 그룹을 DB에 연결

🔧 옵션 항목에서 default로 된 DB 파라미터 그룹을 방금 생성한 신규 파라미터 그룹으로 변경

🔧 계속을 누르면 다음과 같이 수정 사항이 요약된 것을 볼 수 있다. 여기서 반영 시점을 [즉시 적용]으로 한다.

예약된 다음 유지 시간으로 하면 지금 하지 않고, 새벽 시간대에 진행하게 된다. 이 수정사항이 반영되는 동안 DB가 작동하지 않을 수 있으므로 예약 시간을 걸어두는 것이다. 지금은 서비스가 오픈되지 않았으므로 즉시 적용으로 한다.

🌿 내 PC에서 RDS에 접속

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

🔧 RDS의 세부정보 페이지에서 [보안 그룹] 항목을 클릭

🔧 RDS의 보안 그룹 정보를 그대로 두고, 브라우저를 새로 열어 EC2에 사용된 보안 그룹의 그룹 ID를 복사하면 자동으로 RDS의 보안 그룹에 추가된다.

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

이렇게 하면 EC2와 RDS 간에 접근이 가능하다. EC2의 경우 이후에 2대 3대가 될 수도 있는데, 매번 IP를 등록할 수는 없으니 보편적으로 이렇게 보안 그룹 간에 연동을 진행한다.

이것으로 RDS와 개인 PC, EC2 간의 연동 설정은 모두 되었다.

🌿 로컬에서 RDS 테스트

🌳 Database 플러그인 설치

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

각각의 도구마다 큰 차이가 없으니 본인이 가장 좋아하는 툴을 사용하면 되겠다. 여기서는 인텔리제이에 Database 플러그인을 설치해서 진행하겠다.

🔧 RDS 정보 페이지에서 엔드 포인트를 확인한다. 이 엔트 포인트가 접근 가능한 URL이므로 메모장 같은 곳에 복사해 둔다.

🔧 인텔리제이에서 database 플러그인 검색 후 Database Navigator 설치

🌳 RDS 스키마 및 콘솔 생성

🔧 설치 완료 후, Action > Database Browser 실행하여 MySQL 접속 정보를 open (MariaDB는 MySQL 기반이므로 MySQL을 사용하면 된다.)

🔧 본인이 생성한 RDS의 정보를 차례로 등록

Host : RDS의 엔드 포인트

DB 연결이 잘 된 것을 볼 수 있다! 😄

🌳 파라미터 그룹 설정 완료 및 조회

🔧 use 명령어로 사용할 DB 선택

use [database명];

앞서 RDS 인스턴스 생성 시, 입력한 DB 이름으로 하면 된다.

🔧 파라미터 설정을 조회하기 위해 다음 명령을 실행

show variables like 'c%';

쿼리 결과를 보면 잘 적용되지 않은 필드들이 보인다. 이 파라미터들을 직접 변경하겠다.

ALTER DATABASE DB명
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci';

ALTER 명령문 실행 후에도 변경이 되지 않을 경우,

SET 변수명 = [utf8mb4 or utf8mb4_general_ci];

위 명령을 추가적으로 수행했더니 수정 사항이 잘 반영되었다.

잘 변경된 것을 볼 수 있다 😁

🔧 다음 명령을 통해 타임존까지 확인하자

select @@time_zone, now();

🔧 마지막으로 한글명이 잘 들어가는지 간단한 테이블 생성과 insert 쿼리를 실행하겠다.

📝 (주의)

테이블 생성은 인코딩 설정 변경 전에 생성되면 안 된다. 만들어질 당시의 설정값을 그대로 유지하고 있어, 자동 변경이 되지 않고 강제로 변경해야만 한다. 웬만하면 테이블은 모든 설정이 끝난 후 생성하는 것이 좋다.

명령 수행 시, 주의할 점은 테이블명만 적으면 SQL syntax error가 발생한다. 그래서 아래 링크의 내용처럼 DB명.테이블명 형식으로 쿼리를 날려야 작업이 잘 수행되었다.

ref : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=skybrend&logNo=90155188520

다음과 같이 한글 데이터도 잘 등록되는 것이 확인되었다.

RDS에 대한 모든 설정이 끝났다! 💪

🌱 EC2에서 RDS에서 접근 확인


🌿 EC2에서 RDS에서 접근 확인

🔧 putty(windows)를 통해 EC2에 ssh 접속 수행

🔧 접속되었다면 MySQL 접근 테스트를 위해 MySQL CLI 설치

sudo yum install mysql

🔧 설치가 다 되었으면 로컬에서 접근하듯이 계정, 비밀번호, 호스트 주소를 사용해 RDS에 접속

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

Host 주소 : RDS의 접속 URL(엔드 포인트)

🔧 RDS에 접속되었으면 실제로 생성한 RDS가 맞는지 간단한 쿼리를 실행해 보겠다.

show databases;

생성했던 bulletinboard_webservice_2022라는 DB가 있음을 확인할 수 있다.

또한, 앞서 생성했던 테이블도 있음을 확인할 수 있다.

다음 챕터부터는 지금까지 작업했던 내용을 토대로 실제로 스프링 부트 프로젝트를 EC2에 배포하고 RDS에 접근하는 방법을 진행하고 개선하도록 하겠다. 🤿🤿

0개의 댓글