AWS 인프라 구축 ‐ (5) RDS - ttasjwi/board-system GitHub Wiki

RDS

  • 관계형 데이터베이스 서비스(Relational Database Service)

RDS 서브넷그룹 생성

image

  • RDS는 기본적으로 서브넷 그룹을 지정하고 배치해야한다.
  • 서브넷 그룹은 2개 이상의 AZ 에 위치한 서로 다른 서브넷들의 묶음이다.
  • 여기서는 이전에 만든 private-subnet-a, private-subnet-b 를 지정한다. (이들은 각각 ap-northeast-2a, ap-northeast-2b 에 위치했다.)

RDS 보안그룹 생성

  • 보안그룹: AWS 클라우드에서의 네트워크 보안
    • 인바운드 규칙: 인바운드 트래픽(즉, 보안 그룹의 외부에서 내부로 보내는 트래픽)
    • 아웃바운드 규칙: 아웃바운드 트래픽(보안 그룹의 내부에서 외부로 나가는 트래픽)
  • 보안 강화를 위해 RDS 로 들어오는 인바운드 규칙을 설정해야한다.
  • 설정하기 앞서... 향후 계획
    • RDS로는 기본적으로 EC2 보안그룹에서만 접근 가능하게 한다.
    • 하지만, 데이터 삽입등의 편의로 초기작업에서는 내 로컬 PC 에서 접속 가능하게 할 것이다.

image

  • 일단 로컬 PC에서 접속하기 편하게, 3306 포트로의 트래픽을 내 IP에서 접근 가능하도록 설정.

RDS 파라미터 그룹 생성

image

image

  • character-set 설정 : 모두 utf8mb4 로 설정 (한글 + 이모지)

    • character_set_client
    • character_set_connection
    • character_set_database
    • characater_set_filesystem
    • characater_set_results
    • character_set_server
  • collation 설정 : 문자열 정렬 기준이다. collation_connection, collation_server을 utf8mb4_unicode_ci로 설정.

    • utf8mb4_general_ci : 한글을 정렬 기준에서 제외해서 문제
    • utf8mb4_utf8mb4_0900_ai_ci : MySQL 8 을 기본값으로 하였으나 "가" 와 "ㄱㅏ"를 동일한 문자열로 취급하는 문제가 있음
    • utf8mb4_bin : 모든 문자열을 UTF-8 코드 포인트 값에 따라 바이너리 방식으로 비교, 대소문자 구분
      • 대소문자가 다른 것을 다르게 인식하는 것이 좋아보일 수 있어도, 사용자 경험 관점에서 aAAA 사용자와 Aaaa 사용자를 구분해야함.
      • 조회 과정에서도 aaa 로 검색했을 떄 Aaa 가 조회되지 않을 수 있고 쿼리를 수정해야하는 불편함이 발생
      • 보통 무한 detph 댓글 구현 시 경로 열거 방식에서 이 collation 을 부분적으로 활용하는게 나을 듯.
    • utf8mb4_unicode_ci : 대소문자 구분x, 전각/반각 문자 구분 x, 유니코드 표준
      • 제일 무난한 선택이므로 기본값은 utf8mb4_unicode_ci 로 한다. image
  • timezone : Asia/Seoul


RDS 생성

image

  • 표준생성, MySQL(MySQL Community)

image

  • 템플릿: 프리티어
  • 배포옵션: 단일 AZ DB 인스턴스 배포(인스턴스 1개)

image

  • 식별자: board-system-rds
  • 자격증명
    • username: admin
    • password: 적절히 암호생성사이트를 통해 생성한 값

image

  • 인스턴스 설정은 기본값을 가져간다.

image

  • 만들어둔 서브넷그룹, 보안그룹 연결
  • 편의를 위해 퍼블릭 액세스 yes

image

  • 데이터베이스 인증, 모니터링: 기본값

image

  • 초기 데이터베이스 이름: board_db_production
  • 파라미터그룹 연결
  • 백업 비활성화
  • 삭제 방지 활성화 (x)

RDS 접근 설정

  • 일단 현재 rds 는 board-system-subnet-group에 위치해있다.
  • 데이터를 삽입하기 위해서 일단 RDS 접근 설정을 잠깐 열어둘 필요가 있다.

image

  • 이들 서브넷 그룹의 라우팅 테이블에서 라우팅 규칙을 수정할 필요가 있다.
    • 인터넷 게이트에 임시 연결
  • rds로 들어오는 인바운드 규칙은 이미 현재 ip 기준 접근 허용을 해놨다.

RDS 접속

image

image

  • host : 엔드포인트
  • user: admin (아까 지정한거)
  • password: 아까 지정한거
  • database: board_db_production

image

  • advanced -> allowLoadLocalInfile

image

  • Test Connection 버튼을 눌러서 접속에 성공하는 지 확인하면 됨.