일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- IT개발
- cs지식
- 코딩테스트
- 알고리즘풀이
- 백준 java
- 백엔드개발자
- 개발자
- 백엔드 개발자
- IT개발자
- IT
- apm 수동설치
- 백엔드
- IT취준
- 개발자취준
- 원티드
- apm 소스설치
- 코테
- 알고리즘
- 프로그래머스
- 프리온보딩
- Java
- 개발공부
- IT공부
- 자바
- 프리온보딩 백엔드 챌린지
- 백준 자바
- 기술면접
- 백준
- 코딩
- IT취업
- Today
- Total
코이팅
AWS RDS 구축 (MySQL) 본문
1. 데이터 베이스를 분리하는 이유?
서비스를 운영하다 보면 많은 데이터의 저장이 요구되며, 만약 EC2에 문제가 생기면 데이터 베이스에도 접근하지 못한다는 문제가 발생합니다.그러므로 보통 기본 서버와 데이터 베이스 서버를 분리해서 관리를 해줍니다.
- N : 1의 확장성
- 보안에 좋음
- 편리성
2. AWS RDS란?
간단히 말하면 관계형 데이터베이스를 제공하는 AWS의 서비스이다. 유저가 사용하기 쉽도록 인프라 등을 자동화 시켜주고 유저들은 앤드포인트로 접속할 수 있는 데이터베이스를 제공받는다. Amazon RDS를 사용하면 클라우드에서 관계형 데이터베이스를 간편하게 설정, 운영 및 확장할 수 있습니다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 시간 소모적인 관리 작업을 자동화하면서, 비용 효율적이고 크기 조정 가능한 용량을 제공합니다. 사용자가 애플리케이션에 집중해 애플리케이션에 필요한 빠른 성능, 고가용성, 보안 및 호환성을 제공할 수 있도록 지원합니다.
3. RDS 인스턴스 구축
✅ 개발환경
- macOS Ventura 13.1
- Ubuntu Server 22.04 LTS
- MySQL 8.0.28
1) AWS RDS 페이지 접속 및 데이터 베이스 생성 클릭
- 아래 링크로 AWS에 접속하여 RDS 서비스를 검색하여 Amazon RDS 대시보드 페이지로 들어갑니다.
- 이후 데이터 베이스 생성을 클릭합니다.
2) RDS 인스턴스 생성
- 표준 생성으로 MySQL 8.0.20 버전을 이용하였습니다.
- 프리티어로 설정합니다. (이미 rds 있으면 두 번째 인스턴스는 프리티어 설정❌)
- DB 인스턴스 식별자를 자유롭게 정해주세요.
- 마스터 사용자 계정을 생성합니다.
- 암호를 설정해주세요.
- 프리티어는 버스터블 클래스만 선택이 가능합니다.
- db.t2는 CPU 사용률을 최대로 버스트할 수 있는 기능을 통해 기준 성능 수준을 제공하는 현재 세대 인스턴스 클래스입니다.
💊 버스트 : 특정 기준에 따라 한 단위로서 취급되는 연속된 신호나 데이터의 모임
- 프리티어의 스토리지 최대 할당량은 20GB 입니다.
- 스토리지 자동 조정 체크를 해제해주었습니다.
- 스토리지가 늘어났을 경우 프리티어임에도 불구하고 과금이 될 수 있습니다.
- 아래 화면처럼 설정해줍니다.
- 퍼블릭 액세스를 꼭 '예'로 설정해줍니다.
- 기존 항목을 선택하면 자동으로 보안이 연결됩니다.
- 데이터베이스 인증은 암호 인증으로 선택했습니다.
- 추가 구성을 꼭 하는 것을 권장합니다.
- 초기 데이터베이스 이름을 지정해야 하기 때문입니다.
- 데이터베이스 생성을 클릭합니다.
- 생성중인 화면 입니다. 약간의 시간이 소요됩니다.
3) 인바운드 규칙 설정
- 인바운드 규칙을 추가하고 변경사항을 저장해주세요.
- 아래 사진처럼 MySQL/Aurora 포트(3306)에 Anywhere-IPv4, Anywhere-IPv6 소스를 모두 열어 줍니다.
- 대신 모든 IP 주소에서 데이터베이스에 접근할 수 있기 때문에 언젠가 보안 이슈가 발생할 수도 있습니다.
4. MySQL Workbench에서 외부 접속
1) 엔드포인트 url을 확인하고 복사합니다.
2) 워크벤치에 접속하여 커넥션을 추가합니다.
- 원하는 connection name을 입력합니다.
- 엔드포인트 url을 입력합니다.
- 마스터 사용자 이름을 입력합니다.
- 비밀번호를 입력합니다.
💊 만약 연결이 안된다면 Private 서브넷을 Public 서브넷으로 변경합니다. (라우팅 테이블 수정)
- 아래 화면처럼 설정하고 변경 사항을 저장합니다.
- 인터넷 게이트웨이를 클릭하면 자동으로 igw-xxxxxxxx의 ID가 입력됩니다.
라우터 테이블 수정이 완료되었습니다. 연결이 된다면 이 과정은 생략해도 됩니다.
3) 워크벤치에 명령어를 입력하여 SQL을 작동시킵니다.
show variables like 'c%';
- DB 문자형 관련 설정을 확인할 수 있습니다.
- 아직 utf8 설정이 안된 부분이 있으므로 인코더 설정을 해줘야 합니다.
- 타임존 설정과 인코더 설정을 해주겠습니다.
5. 인코딩 / 타임존 설정 및 테스트
- 한글을 사용할 수 있도록 파라미터 설정을 바꿔주기 위해 파라미터 그룹을 하나 생성합니다.
- 파라미터에서 1) collation, 2) character_set를 검색해 인코딩 설정이 가능한 항목은 모두 char : 'utf8mb4' or collation : 'utf8mb4_general_ci'로 변경해줍니다.또 타임존을 Asia/Seoul로 설정해줍니다.
- 이렇게 설정해야 타임스탬프가 제대로 찍힙니다.
- 변경 사항 저장 클릭
- 파라미터 그룹을 적용하기 위해 생성해둔 데이터베이스 설정을 수정합니다다.
- 데이터베이스 - 수정- 추가 구성- 데이터베이스 옵션 항목에서 DB 파라미터 그룹을 default에서 수정해주면 됩니다.
- 즉시적용을 선택하고 DB 인스턴스를 수정합니다.
- 수정사항을 적용시키기 위해서 DB 인스턴스를 재부팅 해줍니다.
- 재부팅 하는데 시간이 걸립니다.
- 재부팅 후 워크벤치를 다시 확인해봅니다.
- 아래 명령어를 입력합니다.
- 서울 시간으로 잘 나오는 것이 확인됩니다.
select @@time_zone, now();
- 아래 명령어를 입력합니다.
- character_set_connection 과 character_set_database가 잘 변경되었습니다.
💊 변경되지 않았을 경우 아래 명령어로 강제 변환시켜줍니다.
ALTER DATABASE DB이름
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci';
이후 변경되었다면 파라미터 그룹의 수정이 생겼으므로 다시 재부팅해줍니다.
- RDS 한글 테스트를 진행합니다.
- 한글이 잘 출력되는지 확인하기 위해서 다음과 같이 test라는 table을 생성합니다.
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;
한글이 깨지지 않고 잘 나오는 것을 확인할 수 있습니다.
6. EC2에서 RDS 접속
1) 터미널에 접속하여 아래 명령어를 입력합니다.
$ mysql -u 사용자명 -p -h RDS엔드포인트주소
마스터 사용자 이름과, RDS 엔드포인트 주소를 확인하여 넣어줍니다.
설정한 비밀번호를 입력해주면 접속됩니다.
mysql> show databases;
mysql> use DB이름을입력하세요;
mysql> show tables;
mysql> select * from test;
'Server' 카테고리의 다른 글
M1 맥북에서 Docker로 oracle DB 실행하는 방법 (15) | 2023.03.03 |
---|---|
SpringBoot 소셜 로그인 구현 - 카카오 로그인 (4) | 2023.02.26 |
AWS에 Let's Encrypt로 HTTPS 적용하기 (2) | 2023.02.12 |
AWS EC2 Ubuntu Nginx 서브 도메인 및 Domain Redirection 적용 (0) | 2023.02.06 |
AWS EC2 ubuntu 가비아 도메인 적용 (1) | 2023.02.06 |