🌱 이번 장의 스터디 범위
- AWS의 관리형 데이터베이스 서비스인 RDS에 대한 소개와 생성 방법
- RDS로 서비스를 하는데 필요한 여러 파라미터 설정들
- 인텔리제이 커뮤니티 버전으로 데이터베이스를 다루는 방법
- EC2와 RDS 간 연동 방법
🌱 AWS의 관리형 데이터베이스 서비스인 RDS에 대한 소개
- AWS에서는 모니터링, 알람, 백업, HA 구성 등을 모두 지원하는 관리형 서비스 RDS (Relational Database Serive) 제공
- RDS는 AWS에서 지원하는 클라우드 기반 관계형 데이터베이스
- 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있도록
- 추가로 조정 가능한 용량을 지원하여 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 내면 정상 서비스가 가능한 장점
🌱 RDS 인스턴스 생성하기
1. RDS 대시보드에서 데이터베이스 생성 버튼 클릭
2. 표준 생성, MariaDB, 프리티어 선택
- RDS에는 오라클, MSSQL, PostgreSQL, MariaDB가 있음
- MariaDB의 경우 동일한 사양 대비 가격이 저렴하며 Amazon Aurora 교체 용이성을 가짐
- MySQL을 기반으로 만들어져 MySQL보다 성능된 향상, 좀 더 활성화된 커뮤니티, 다양한 기능, 다양한 스토리지 엔진을 가짐
3. 설정 : DB 인스턴스 이름과 사용자 정보를 등록하며, 이 사용자 정보는 실제 데이터베이스 접속 시 사용
4. 스토리지
5. 연결
6. 추가 구성
7. 완료 후 DB 인스턴스 세부 정보보 보기를 클릭 해 생성 중인 데이터베이스의 상세 페이지로 이동
🌱 RDS 운영환경에 맞는 파라미터 설정하기
- 타임존
- Charater Set
- Max Connection
1. 파라미터 그룹 탭 클릭
2. 파라미터 그룹 생성
3. 생성된 파라미터 그룹 선택
4. 파라미터 편집
5. time_zone을 검색하여 [Asia/Seoul] 선택
6. Character Set을 변경 : character 항목들은 모두 utf8mb4로, collation 항목들은 모두 utf8mb4_general_ci로 변경
- utf8은 이모지를 저장할 수 없고, utf8mb4는 이모지를 저장할 수 있어 보편적으로 더 많이 씀
- character_set_client
- character_set_connection
- character_set_database
- character_set_filesystem
- character_set_results
- character_set_server
- collation_connection
- collation_server
7. Max Connection 수정 : 자동으로 정해지지만 프리티어의 경우 60개의 커넥션만 가능해 max_connections를 150으로 지정
8. 변경 사항 저장 버튼
9. 생성된 파라미터 그룹을 데이터베이스에 연결 : default에서 방금 생성한 신규 파라미터 그룹으로 변경 후 즉시 적용
10. 정상 적용을 위해 재부팅
🌱 내 PC에서 RDS에 접속해 보기
1. RDS의 보안 그룹에 본인 PC의 IP를 추가
2. 연결 & 보안에서 VPC 보안 그룹 선택
3. 새로운 브라우저를 열어서 EC2에 사용된 보안 그룹의 그룹 ID를 복사하여 RDS 보안 그룹의 인바운드로 추가
4. RDS 정보 페이지의 엔드 포인트 확인 : 엔드 포인트가 접근 가능한 URL임
5. 로컬에서 테스트를 하기 위해 인텔리제이에 Database 플러그인 설치 : [File] - [Settings] - [Plugins] - [Database Navigator]
6. 인텔리제이 재시작 후 Action 검색으로 Database Browser를 실행해 프로젝트 왼쪽 사이드바에 노출 : [Ctrl + Shift + a]
7. [+] - [MySQL]을 클릭 해 접속 정보를 열어 RDS의 정보를 차례로 등록 : Host는 aws의 엔드 포인트
🌟 여기서부터 오류가 발생되어 연결되지 않아 MySQL Workbench를 사용해서 실습하였음.
(위와 동일한 방법으로 Hostname 부분에 엔드 포인트를 등록하고, 마스터 계정명과 비밀번호를 등록해 연결)
8. SQL을 실행할 콘솔을 열기
9. 쿼리가 수행될 database를 선택하는 쿼리 작성
// use AWS RDS 웹 콘솔에서 지정한 데이터베이스명;
use freelec_springboot2_webservice;
10. 데이터베이스가 선택된 상태에서 현재의 character_set, collation 설정을 확인
show variables like 'c%';
11. 쿼리 결과에서 MariaDB에서만 RDS 파라미터 그룹으로 변경이 되지 않아 uft8mb4가 적용되지 않고 latin인 것을 변경
/* ALTER DATABASE 데이터베이스명
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci'; */
ALTER DATABASE freelec_springboot2_webservice
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci';
12. 타임존 쿼리로 확인 : RDS 파라미터 그룹이 잘 적용되어 한국 시간으로 나타나야 함
select @time_zone, now();
13. 한글명이 잘 들어가는지 간단한 테이블 생성과 insert 쿼리를 실행
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에서 접근 확인
1. putty를 사용해 ssh 접속 후, MySQL 접근 테스트를 위해 MySQL CLI를 설치
sudo yum install mysql
2. 계정, 비밀번호, 호스트 주소를 사용해 RDS에 접속
mysql -u 계정 -h Host주소
3. EC2에서 RDS로 접속되는 것 확인 가능
4. 실제로 생성한 RDS가 맞는지 간단한 쿼리를 실행 : 우리가 생성한 freelect_springboot2_webservice 존재
show databases;
'Java-Spring > 스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 카테고리의 다른 글
스프링부트와 AWS로 혼자 구현하는 웹 서비스 - 목차 (0) | 2023.07.03 |
---|---|
[Spring Boot] 08장. EC2 서버에 프로젝트를 배포해 보자 (0) | 2021.11.09 |
[Spring Boot] 06장. AWS 서버 환경을 만들어보자 - AWS EC2 (0) | 2021.11.01 |
[Spring Boot] 05장. 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 - 기존 테스트에 시큐리티 적용하기 (0) | 2021.10.31 |
[Spring Boot] 05장. 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 - 네이버 로그인 (0) | 2021.10.31 |