AWS RDS 생성과 기본 설정
RDS 생성하기
RDS 데이터베이스 인스턴스 생성
- AWS 콘솔에서 RDS 서비스 접속
- 데이터베이스 생성 버튼 클릭
MariaDB 엔진 선택
- MariaDB 엔진과 프리티어 템플릿을 선택한다.
MariaDB 엔진을 사용하는 이유는 다음과 같다.
- MySQL과 PostgreSQL과 호환되는 완전 관리형 DB 엔진인 Amazon Aurora와 호환이 된다.
- MariaDB는 MySQL 기반이기 때문이다. 그러나 MySQL는 오라클로 인수되면서 비용이 더 비싸졌으니 MariaDB가 더 좋은 선택이다.
- (상용에서 오라클 라이선스로 MySQL 지원을 받는다면 MySQL을 사용해도 된다!)
- MariaDB는 MySQL보다 더 향상된 성능, 기능을 가지고 있고 오픈소스이므로 커뮤니티가 더 활성화 되었다.
상세 설정
- 어떤 용도의 DB 인스턴스인지 알아볼 수 있게 식별자를 입력한다.
- DB 마스터 사용자 이름과 비밀번호를 입력한다.
- 템플릿 그대로 따라간다
- 퍼블릭 엑세스 기능
예
를 선택한다.
- 초기 데이터베이스 이름을 입력한다. (
-
사용 불가) - 마지막으로 데이터베이스 생성한다.
RDS 운영환경에 맞는 설정
- RDS 생성시 타임존, Character Set, Max Connection 설정을 해줘야 한다.
파라미터 그룹
파라미터 그룹
선택
파라미터 그룹 생성
버튼 클릭
- 파라미터 그룹 정보를 입력하고
생성
버튼을 클릭한다.
- 파라미터 그룹 목록 방금 생성한 파라미터 그룹 클릭
- 기본 설정된 파라미터 목록들이 보이는데, 우측 상단
파라미터 편집
버튼 클릭
타임존 설정
time_zone
검색 후 time_zone 항목 드롭다운 선택하여Asia/Seoul
선택
문자열 셋 설정
다음의 문자열 셋 설정 항목들을 검색하여 설정한다
- utf8mb4 로 설정할 것들 (utf8과의 차이는 이모지 저장 가능 여부로, utf8mb4는 이모지 저장 가능하다)
- character_set_client
- character_set_connection
- character_set_database
- character_set_filesystem
- character_set_results
- utf8mb4_general_ci 로 설정할 것들
- collation_connection
- collation_server
collation은 어떤 방식으로 정렬할 것인가로 utf8mb4_general_ci는 사람이 인식하는 대로 정렬한다.
Max Connection 설정
- RDS의 Max Connection은 인스턴스 사양에 따라 자동으로 정해진다.
- 현재 프리티어 사양은 약 60개의 커넥션만 가능하므로 늘려준다.
모든 설정이 완료되면 변경사항을 적용하자.
파라미터 그룹과 DB 인스턴스 연결
- 대시보드에서 인스턴스 선택후 수정 버튼 클릭
- DB파라미터 그룹을 선택한다.
- 수정사항을 반영하며
즉시 적용
하여 수정한다.
RDS 보안 설정
- 본인 집과 웹 서비스 EC2에서 RDS에 접근할 수 있게 설정하자.
- 먼저 웹서비스용 EC2 인스턴스에서의 접근을 허용하자
- 클릭 하면
EC2 > 보안그룹
메뉴로 이동하며 선택한 RDS VPC 기본 보안 그룹이 필터링 되어있다.
- 해당 보안 그룹 ID를 클릭하여 상세 페이지로 이동한다.
- 인바운드 규칙 편집을 클릭한다.
규칙 추가
버튼을 클릭하여 생성된 라인에서MYSQL/Auora
를 선택한다.- 사용자 지정 목록에서 웹서비스용 EC2의 보안 그룹을 선택한다.
- 다음으로 본인 집 IP를 허용하도록 설정을 추가한다.
- 마찬가지로
규칙 추가
버튼을 클릭하여 생성된 라인에서사용자 지정 TCP
를 선택한다. 3306
포트를 입력한다.사용자 지정 유형
으로 본인 IP를 입력한다. 드롭다운에서본인IP/32
보여지고 선택하면 그림처럼 세팅된다.- 마지막으로
규칙 저장
을 하면 적용된다.
DB에 접속해보기
- RDS > DB 인스턴스 목록에서 DB를 선택 후 상세페이지의
연결 & 보안
을 확인한다. - 엔드포인트를 복사한다.
- 사용하는 Database 툴에서 MariaDB 연결 설정의 Host 정보로 등록한다
- 여기서는
DataGrip
(JetBrain 사의 DB 툴)을 예제로 사용하겠다.
Datagrip으로 연결
- Data Source > MariaDB를 선택하여 설정 창을 연다.
- 이름: 표시할 이름 입력
- Host: AWS RDS 엔드포인트 입력
- User: RDS 생성시 입력한 마스터 사용자명
- Password: 마스터 사용자 비밀번호
- Database: 접속시 연결할 기본 Database 이름 (입력 안해도 무방, 연결 후 Schma 선택 가능)
- URL: 위의 입력 정보를 바탕으로 자동으로 세팅 된다. 반대로 URL을 입력하면 위의 정보가 세팅된다.
Test Connection
을 클릭하여 커넥션 테스트
설정 확인
use springboot_aws_study_webservice;
show variables like 'c%';
- 앞서 AWS RDS 콘솔에서 파라미터 옵션에서 설정한 내용이 정확히 적용되어있지 않다.
character_set_database
는 설정을 해줬음에도 기본값인latin1
로 표시된다.- (위의 그림은 다음에 설명할 수동 변경 쿼리로 잘못 utf-8로 변경한 것인데, 기본값인 latin1이 변경이 안된다)
- 다음의 참고 문서를 보면, 서버에서 직접 수정해야 한다고 나온다.
- 다음 쿼리로 직접 수정하자
ALTER DATABASE springboot_aws_study_webservice
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci';
-
최종적으로 옵션들이 변경된 것을 확인할 수 있다.
-
타임존 확인하자
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;
EC2에서 접속하기
$ ssh springboot-aws-study-webservice
- 접속이 완료되면 mysql을 설치하자
$ sudo yum -y install mysql
# ... 설치완료
- 설치가 완료되면 mysql 접속하자
# mysql -u [계정] -p -h [호스트명]
$ mysql -u hoonmaro -p -h springboot-aws-study-webservice.cbdudkejudka.ap-northeast-2.rds.amazonaws.com
Enter password: [패스워드 입력]
# -p 옵션으로 패스워드 입력 단계 표시
# 접속 완료
# Database 확인
> show tables;
# 이전에 추가한 springboot_aws_study_webservice 목록에 존재하는 것 확인
지금까지 배운 것
- AWS RDS 생성
- 기본 파라미터 그룹 설정
- 보안 그룹 설정
- Datagrip DB툴을 이용하여 연결
- 기본 파라미터 확인 및 수동 파라미터 설정
- EC2에서 mysql 설치
- EC2에서 RDS 연결
참고
- 이동욱. 2019. 스프링 부트와 AWS로 혼자 구현하는 웹 서비스. 프리렉
'프로그래밍 > AWS' 카테고리의 다른 글
AWS EC2(아마존 리눅스2) 생성과 Java 13 설치 (1592) | 2020.06.28 |
---|