728x90
반응형
1. AWS RDS
- 애플리케이션 코드를 작성하는 것만큼 중요한 것이 데이터 베이스를 다루는 작업
- EC2 서버와 연동
- 직접 데이터베이스를 설치하지 않음
- AWS에서 언급한 작업을 모두 관리형 서비스인 RDS를 제공함
- RDS는 AWS에서 지원하는 클라우드 기반 관계형 데이터베이스
- 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 지원하는 서비스이며, 추가로 조정 가능한 용량을 지원하여 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 내면 정상적으로 서비스가 가능하다는 장점이 있음
2. RDS 인스턴스 생성
- 검색창에 rds 검색하여 선택하고, RDS 대시보드에서 데이터 베이스 생성 버튼 클릭
- DB 엔진 선택화면에서 MariaDB를 선택
- RDS에는 오라클, MSSQL, PostgreSQL 등이 있으며, 가격 및 Amazon Aurora 교체 용이성 장점을 가짐
- Amazon Aurora는 AWS에서 MYSQL과 PostgreSQL을 클라우드 기반에 맞게 재구성한 데이터베이스
- 공식자료에 의하면 RDS MySQL 대비 5배, RDS PostgreSQL보다 3배의 성능을 제공함
- AWS에서 직접 엔지니어링하고 있기 때문에 계속 발전하고 있음
- Aurora는 프리티어 대상이 아니며, 최저 비용이 월 10만원 이상이기 때문에 MariaDB로 대체함
- MySQL 기반으로 만들어졌으며, 쿼리를 비롯한 전반적인 사용법은 MySQL과 유사함
- 동일 하드웨어 사양으로 MySQL보다 향상된 성능
- 좀 더 활성화된 커뮤니티
- 다양한 기능
- 다양한 스토리지 엔진
- RDS에는 오라클, MSSQL, PostgreSQL 등이 있으며, 가격 및 Amazon Aurora 교체 용이성 장점을 가짐
- DB 엔진 선택화면에서 MariaDB를 선택
- DBMS 선택 : MariaDB
- 프리티어 선택
- 할당된 스토리지 20 선택
- DB인스턴스와 마스터 사용자 정보 등록
- 네트워크에선 퍼블릭 엑세스를 예로 변경하고, 이후 보안 그룹에서 지정된 IP만 접근하도록 막을 예정
- 파라미터 그룹의 변경을 이후에 진행할 예정이니, 기본값으로 설정
- 모든 설정이 끝나서 완료 버튼을 진행하면 생성 과정이 진행되며, DB 인스턴스 세부 정보 보기를 클릭하면 생성 중인 데이터베이스의 상세 페이지로 이동함
3. RDS 운영환경에 맞는 파라미터 설정
- RDS 설정
- 타임존
- Character Set
- Max Connection
- 파라미터 그룹 이동
- 이전에 생성한 MariaDB와 같은 버젼을 맞추고, 그룹 이름을 입력
- 생성완료 되면, 파라미터 그룹 목록 창에 새로 생성된 그룹을 볼 수 있음
- 해당 파라미터 그룹을 클릭함
- 파라미터 편집 버튼 클릭하여 편집모드로 전환
- 설정값 변경
- time_zone : Asia/Seoul
- Character Set
- character 항목 모두 utf8mb4로, collation 항목들은 utf8mb4_general_ci 변경
- 이 차이는 이모지 저장 가능 여부
- Max Connection은 인스턴스 사양에 따라 자동으로 정해지며, 현재 프리티어 사양으로 약 60개의 커넥션만 가능해서 좀 더 넉넉한 값으로 지정 (대략 150)
- character 항목 모두 utf8mb4로, collation 항목들은 utf8mb4_general_ci 변경
- 파라미터 그룹을 데이터베이스에 연결
- 데이터베이스에서 선택하여 수정 버튼 클릭
- 옵션 항목에서 DB 파라미터 그룹은 default로 되어 있고, DB 파라미터 그룹을 방금 생성한 신규 파라미터 그룹으로 변경
- 이후, 저장을 누르고, 수정사항이 요약된 것을 확인할 수 있으며, 반영시점을 즉시 적용으로 선택하고 수정 버튼 클릭
4. 내 PC에서 RDS 접속
- 로컬PC에서 RDS로 접근하기 위해 RDS의 보안 그룹에 본인 PC의 IP 추가
- RDS의 세부정보 페이지에서 보안 그룹 항목을 클릭
- RDS의 보안 그룹 정보를 그대로 두고, 브라우저를 새로 열어봄
- 브라우저 다른 창에서 보안 그룹 목록 중 EC2에 사용된 보안 그룹의 그룹 ID를 복사함
- 복사된 보안 그룹 ID와 본인의 IP를 RDS 보안 그룹의 인바운드로 추가함
- 인바운드 규칙 유형에서 MYSQL/Aurora를 선택하면 자동으로 3306 포트가 선택됨
- 보안그룹 첫 번째 줄 : 현재 내 PC의 IP를 등록
- 보안 그룹 두 번째 줄 : EC2의 보안 그룹을 추가
- 이렇게 하면 EC2와 RDS 간에 접근이 가능
- EC2의 경우 이후에 2대 3대가 될 수도 있는데, 매번 IP를 등록할 수 없으니 본편적으로 이렇게 보안 그룹 간에 연동을 진행함
- 인바운드 규칙 유형에서 MYSQL/Aurora를 선택하면 자동으로 3306 포트가 선택됨
- RDS의 세부정보 페이지에서 보안 그룹 항목을 클릭
- 로컬 테스트
- Database 플러그인 설치
- 로컬에서 원격 데이터베이스로 붙을 때, GUI 클라이언트를 많이 사용함
- 인텔리제이에 Database 플러그인을 설치해서 진행
- RDS 정보 페이지에서 엔드포인트에 있는 엔드포인트가 접근 가능한 URL을 메모장에 복사해둠
- 인텔리제이로 이동하여 database 플러그인을 검색하여 Database Navigator에서 install 클릭
- 설치 이후, 인텔리제이를 재시작하고, Action 검색으로 Database Browser 실행
- Action 검색 : Command + Shift + a
- DB Browser 탭에서 MySQL 접속 정보를 열고 사용
- 본인이 생성한 RDS의 정보를 차례로 등록함
- 마스터 계정과 비밀번호 등록 뒤, 화면 아래의 Test Connection 클릭하여 연결 테스트 진행
- Database 플러그인 설치
[연결 테스트 결과 출력]
- 인텔리제이에 RDS의 스키마가 노출되고, 위쪽에 있는 Open SQL Console 버튼을 클릭하고 New SQL Console 항목을 선택해서 SQL을 실행할 콘솔창을 open
- 생성된 콘솔창에서 SQL을 실행하고, 아래는 쿼리가 수행될 database를 선택하는 쿼리
- "use AWS RDS 웹 콘솔에서 지정한 데이터베이스명"
- 만약 본인이 RDS 생성 시 지정한 database명을 잊었다면, 인텔리제이 왼쪽의 Schema 항목을 보면 MySQL에서 기본으로 생성하는 스키마 외에 다른 스키마가 1개 추가되어 있으니 확인하면 됨
- "show variable like 'c%';
- 데이터베이스가 선택된 상태에서 현재의 character_set, collation 설정을 확인
- 책과는 다르게 나는 문제가 없어서 다음으로 진행함
- "select @@time_zone, now();"
- 시간도 문제없이 서울 시간이 나옴
- 한글명이 잘 들어가는지 간단한 테이블 생성과 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;
5. EC2에서 RDS에서 접근 확인
- 접속 되었다면, MySQL 접근 테스트를 위해 MySQL CLI를 설치
- sudo yum install mysql
- 설치가 다 되었으면, 로컬에서 접근하듯이 계정, 비밀번호, 호스트 주소를 사용하여 RDS 접속
- mysql - u 계정 -p -h Host주소
- 패스워드 입력 메시지가 나오면, 패스워드 입력
- RDS 접속되었으면, 실제로 생성한 RDS가 맞는지 간단한 쿼리를 실행
- show database;
728x90
반응형
'Web > SpringBoot' 카테고리의 다른 글
9. Travis CI 배포 자동화 (0) | 2022.03.14 |
---|---|
8. EC2 서버에 프로젝트 배포 (0) | 2022.03.07 |
6. AWS 서버환경 - AWS EC2 (0) | 2022.03.04 |
5. Spring security와 OAuth2.0으로 로그인 기능 구현 (0) | 2022.03.03 |
4. 머스테치로 화면 구성 (0) | 2022.02.28 |
댓글