해당 글은 전'우아한 형제들' 현'인프런'의 개발자이신 jojoldu님의 블로그와 책(스프링 부트와 AWS로 혼자 구현하는 웹서비스)을 참고하여 작성하였습니다.
이전 글에서 서버를 생성하였고, 이번 글에서는 서비스에서 사용할 데이터베이스를 생성하겠습니다.
1. RDS 생성하기
- 아마존에서 제공하는 관계형 데이터베이스 서비스(RDS : Relational Database Service)를 생성합니다.
- AWS에서 RDS를 검색하여 대시보드 페이지로 이동합니다.
- "데이터베이스 생성"을 클릭합니다.
- 사용하고자 하는 DB를 선택합니다.(해당 글에서는 Maria DB를 선택하겠습니다.)
- 템플릿은 "프리티어"를 선택합니다.
- DB 설정을 입력합니다.
- 각, 마스터 사용자 이름, 비밀번호, 데이터베이스 이름은 외부에서 해당 DB에 접근하기 위해 사용되는 정보이므로, 별도로 입력한 정보를 기억해야 합니다.
- DB 인스턴스 크기는 t2.micro 를 선택합니다.(템플릿을 프리티어 선택하셨으면, 자동으로 선택됩니다.)
- 스토리지를 설정합니다. (프리티어 에서는 20G만 사용 가능합니다.)
- 연결 에서는 VPC 보안 그룹을 새로 생성 합니다.
- 추가 구성 에서는 데이터베이스의 버전과 사용할 이름, 포트번호를 설정합니다.
- 월별 추정 요금을 확인 후 "데이터베이스 생성"을 클릭 합니다.
(혹여, 월별 추정 요금에 요금이 적혀있으면, 실제 과금이 될 수 있기 때문에, 설정을 다시 확인하시기 바랍니다.)
- 조금 시간이 지나면, RDS 생성이 완료됩니다.
2. 보안 그룹 생성
- RDS가 사용 가능이 되었다면, 지정한 식별자를 클릭하여 상세화면으로 이동합니다.
- 보안 -> VPC 보안 그룹을 클릭하여, 보안그룹 페이지로 이동합니다.
- 검색을 통해 이전에 만들어놓은 EC2 인스턴스의 보안 그룹을 찾아서 그룹 ID를 복사합니다.
(해당 글에서는 springboot로 검색)
- "보안 그룹 생성"을 클릭합니다.
- 보안 그룹 이름과 설명을 작성합니다.
- 인바운드 규칙에서는 MYSQL/Aurora로 2개를 입력합니다.
- 사용자 지정으로 방금 복사한 EC2 인스턴스의 보안 그룹 ID를 입력합니다.(생성한 EC2 서버와 RDS간의 통신)
- 내 IP로 현재 접속한 IP를 등록합니다.(로컬 PC에서 RDS에 접속)
- "규칙 저장"을 클릭하여 보안 그룹을 생성합니다.
- 다시 RDS 대시보드로 이동하여, 상세보기에서 "수정"을 클릭합니다.
- "연결"에서 방금 생성한 보안 그룹을 선택하고, 이전에 있던 보안 그룹은 삭제합니다.
- "수정"을 진행합니다.
3. 로컬 PC에서 RDS 접근하기
- 생성한 RDS에 접속하여, DB가 잘 설정 되었는지 확인합니다.
- 맥 전용 DB접속 툴인 Sequel Pro를사용하겠습니다.(따로 사용하시는 툴을 사용하시면 됩니다.)
- 생성한 RDS 상세보기 시 엔드포인트 항목이 있습니다. 이것이 해당 DB의 호스트 주소입니다.(해당 값을 복사합니다.)
- Sequel Pro를 실행하여, 접속 정보를 입력합니다.
Host : RDS의 엔드포인트
Username : RDS 생성시 작성한 마스터 유저 이름
Password : RDS 생성시 작성한 비밀번호
Database : RDS 생성시 작성한 DB 이름
Port : RDS 생성시 작성한 포트번호
- 접속을 확인하고, 아래 명령을 통해 현재 DB의 character-set 상태를 살펴봅니다.
show variables like 'c%';
- 현재 기본 설정이 utf8이 아닌 latin1으로 되어 있습니다.
- utf8이 아니면 한글이 정상적으로 나오지 않기 때문에, 이를 수정합니다.
- RDS 설정 페이지에서 "파라미터 그룹"을 클릭하여 이동 후 , "파라미터 그룹 생성"을 클릭합니다.
(default 파라미터 그룹은 수정이 불가능합니다.)
- 간단하게 정보를 작성합니다.
- 생성한 파라미터를 클릭하여 상세화면으로 이동 후, "파라미터 편집"을 클릭합니다.
- 검색에 character set / collation_ 을 검색하여 charcter set 관련은 utf8 으로 collation 관련은 utf8_generic_ci 으로 변경합니다.
- 변경 사항이 저장되었으면, 이 파라미터 그룹을 RDS에 적용합니다.
- RDS 상세화면에서 수정을 클릭합니다.
- 생성한 파라미터 그룹을 선택 후 계속을 클릭합니다.
- "즉시 적용"을 클릭 후 DB 인스턴스 수정을 클릭하여 설정을 수정합니다.
- DB 인스턴스 수정이 완료가 되었다면, 완전한 설정이 되도록 해당 RDS를 재부팅합니다.
- RDS가 재부팅이 끝났으면, 설정한 값이 정상적으로 바뀌었는지 다시 확인합니다.
show variables like 'c%';
- 아직 변경 안된 부분이 있는데, 이 부분은 직접 변경을 합니다.
- 아래 명령어를 통해 직접 변경합니다.
ALTER DATABASE 본인database(ex : webservice)
CHARACTER SET = 'utf8'
COLLATE = 'utf8_general_ci';
- 설정이 끝났다면, 간단하게 확인합니다.
-- 테이블 생성
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;
- 이제 외부(로컬)에서 RDS로 생성한 DB로 접근이 가능합니다.
4. EC2 에서 RDS로 접근하기
- 우리는 웹서비스를 만드는 것이기 때문에, 로컬에서 RDS 접근이 아니라 EC2에서 접근이 가능해야 합니다.
- 기존에 생성했던 ssh 명령을 통해 EC2에 접속합니다.
ssh config이름 (ex : ssh springboot-webserivce)
- EC2에 접속 후 MySQL을 설치합니다.
sudo yum install mysql
- 설치가 완료되면, MySQL에 접속을 합니다.
- 로컬에서 Sequel Pro를 사용하여 접속하는 것처럼 계정, 비밀번호, 호스트 주소를 사용해 RDS에 접속합니다.
mysql -u 계정 -p -h Host주소 (ex : mysql -u jaewon -p -h jaewonRDSHost)
- MySql(Maria DB)에 접속이 되었다면, 이전에 생성한 database(ex : webservice)가 있는지 확인합니다.
show databases;
- 이로써, 우리는 이제 서버가 구축되었고, DataBase도 사용이 가능하게 되었습니다.
출처
'BackEnd > Spring' 카테고리의 다른 글
[SpringBoot] 웹서비스 출시하기 - 4. TravisCI & AWS CodeDeploy로 배포 자동화 구축하기 (2) | 2021.04.18 |
---|---|
[SpringBoot] 웹서비스 출시하기 - 3. EC2 배포하기 (0) | 2021.04.17 |
[SpringBoot] 웹서비스 출시하기 - 1. AWS EC2 구축 (0) | 2021.04.10 |
[SpringBoot] Google reCAPTCHA V2 사용하기 (2) | 2021.04.04 |
[SpringBoot] thymeleaf-layout-dialect 적용하기 (0) | 2021.04.03 |