본문 바로가기
Web/SpringBoot

7. AWS 데이터베이스 서버환경 - AWS RDS

by SeleniumBindingProtein 2022. 3. 5.
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보다 향상된 성능
        • 좀 더 활성화된 커뮤니티
        • 다양한 기능 
        • 다양한 스토리지 엔진
  • 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)
  • 파라미터 그룹을 데이터베이스에 연결
    • 데이터베이스에서 선택하여 수정 버튼 클릭
    • 옵션 항목에서 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를 등록할 수 없으니 본편적으로 이렇게 보안 그룹 간에 연동을 진행함
  • 로컬 테스트
    • Database 플러그인 설치 
      • 로컬에서 원격 데이터베이스로 붙을 때, GUI 클라이언트를 많이 사용함
      • 인텔리제이에 Database 플러그인을 설치해서 진행
      • RDS 정보 페이지에서 엔드포인트에 있는 엔드포인트가 접근 가능한 URL을 메모장에 복사해둠
      • 인텔리제이로 이동하여 database 플러그인을 검색하여 Database Navigator에서 install 클릭
      • 설치 이후, 인텔리제이를 재시작하고, Action 검색으로 Database Browser 실행
        • Action 검색 : Command + Shift + a
        • DB Browser 탭에서 MySQL 접속 정보를 열고 사용
        • 본인이 생성한 RDS의 정보를 차례로 등록함
        • 마스터 계정과 비밀번호 등록 뒤, 화면 아래의 Test Connection 클릭하여 연결 테스트 진행

[연결 테스트 결과 출력]

 

  • 인텔리제이에 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();"
        • 시간도 문제없이 서울 시간이 나옴

012

  • 한글명이 잘 들어가는지 간단한 테이블 생성과 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;

01

 

5. EC2에서 RDS에서 접근 확인

  • 접속 되었다면, MySQL 접근 테스트를 위해 MySQL CLI를 설치
    • sudo yum install mysql
  • 설치가 다 되었으면, 로컬에서 접근하듯이 계정, 비밀번호, 호스트 주소를 사용하여 RDS 접속
    • mysql - u 계정 -p -h Host주소
    • 패스워드 입력 메시지가 나오면, 패스워드 입력
    • RDS 접속되었으면, 실제로 생성한 RDS가 맞는지 간단한 쿼리를 실행
      • show database;

012

728x90
반응형

댓글