[AWS] EC2 RDS With MySQL 설정

sbj·2024년 1월 28일
0

Web

목록 보기
3/4
post-thumbnail

도입 계기
프로젝트에서 데이터 베이스 설계를 맡았다. 로컬 서버에서 원격 접속을 하려했으나, 대다수가 각자의 로컬에 DB를 생성하자고 제안한 상황. 우려했던 대로 팀원들이 임의로 컬럼, 데이터 타입 등을 수정하는 상황이 발생했다. 따라서, AWS RDS를 사용해 모두 하나의 데이터 베이스에 접속할 수 있도록 하기 위해 RDS를 사용해볼 것이다. 🫠

🚀 Amazon AWS EC2 RDS 사용하기

AWS의 클라우드 데이터 베이스 서비스인 RDS를 사용하여, EC2 인스턴스에서 MySQL을 사용할 수 있다. 쉽게 RDBMS를 사용할 수 있고, 다양한 데이터 베이스 엔진을 지원한다. AWS에서 MySQL을 세팅해보자.


1. AWS EC2 RDS MySQL생성


2. DB 설정

마스터 이름, 암호를 설정해준다.

  • 이 부분은 추후 MySQL 접속 시 활용 되므로 기억해두어야 한다.


3. 인스턴스, 스토리지 설정

인스턴스 설정은 AWS RDS에서 데이터베이스를 실행하는 서버를 설정하는 것을 의미한다.

설정 항목설명
인스턴스 설정인스턴스의 크기와 유형을 선택하며, 선택한 인스턴스 유형은 데이터 베이스 성능에 영향을 미친다. 각 프로젝트 환경에 따라 설정해야 한다.
스토리지 설정AWS RDS에서 사용할 데이터베이스의 저장 공간을 설정한다. 선택한 인스턴스에 따라 최대 스토리지 크기가 정해지며, 이를 통해 데이터 베이스 크기를 조절할 수 있다. 또한, RDS는 자동 스토리지 확장 기능을 제공하여, 데이터 베이스가 스토리지 용량에 도달하면 자동으로 스토리지를 확장한다.


4. 퍼블릭 액세스, VPC 보안그룹, 데이터베이스 포트 설정

퍼블릭 액세스 설정은 데이터베이스 인스턴스가 퍼블릭 인터넷을 통해 접근 가능한지를 결정한다. 퍼블릭 액세스가 활성화되면, 어디서든 인터넷을 통해 데이터베이스에 접속할 수 있다. 보안상 이유로 퍼블릭 액세스는 가능한 한 비활성화 하는 것이 좋으나, “아니요”를 선택하면 퍼블릭 IP 주소가 할당되지 않기 때문에 외부에서 접속할 수 없다.

VPC 보안그룹 설정은 데이터베이스에 액세스할 수 있는 IP 주소 범위를 제한한다. 보안그룹에는 특정 IP 주소 또는 IP 주소 범위를 추가할 수 있으며, 이들 주소만 데이터베이스에 접속할 수 있다.

데이터베이스 포트 설정은 데이터베이스에 접속할 때 사용할 네트워크 포트를 지정한다. MySQL의 경우 기본 포트는 3306이고, 이 포트를 통해 데이터 베이스에 접속할 수 있다.


5. 추가 구성

데이터베이스의 추가 구성 항목에서는 데이터베이스의 백업, 로그 내보내기, 가용성 및 복구를 설정할 수 있다.

설정설명
백업 설정자동 백업을 설정하고, 데이터베이스 스냅샷을 생성하며, 이 스냅샷은 지정된 기간 동안 보관된다.
로그 내보내기 설정데이터베이스 로그를 Amazon CloudWatch Logs로 내보내고, 데이터베이스 성능을 모니터링하고 문제를 진단한다.
가용성 및 복구 설정데이터베이스의 고가용성, 재해 복구, 장애 조치를 위한 설정을 제공하고, 다중 AZ 배포를 활성화하여 데이터베이스 인스턴스를 다른 가용 영역에 자동으로 복제한다.


6. 생성하기


7. 생성이 완료된 후, 확인해볼 것

생성된 후, "엔드포인트"와 "보안 그룹"을 확인

항목설명
엔드 포인트Amazon RDS 데이터베이스 인스턴스에 연결하기 위한 호스트 이름이다. RDS 대시보드의 속성 탭에서 해당 정보를 확인할 수 있다.
✳ 외부로 유출하지 않도록 해야한다!
보안 그룹인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어한다. 보안 그룹 설정을 통해 특정 IP 주소 또는 IP 주소 범위에서만 데이터 베이스에 접속할 수 있도록 제한할 수 있다.


8. 한글 설정

순서과정설명
1AWS RDS 대시보드에서 'Parameter groups' 클릭Parameter groups 설정 창으로 넘어간다.
2'Create parameter group' 클릭새로운 parameter group을 만들 수 있는 창이 열린다.
3'Parameter group family'에서 MySQL 버전 선택, 'Group name'과 'Description' 작성MySQL 버전에 맞는 parameter group을 만들고, 이름과 설명을 입력한다.
4생성한 parameter group 클릭 후 'Edit parameters' 클릭parameter group의 세부 설정을 변경할 수 있는 창이 열린다.
5'characterset%' 검색 후, 값 'utf8mb4'로 변경MySQL의 문자셋 설정을 한글이 처리되는 'utf8mb4'로 변경한다.
6'collation_%' 검색 후, 값 'utf8_general_ci'로 변경MySQL의 collation 설정을 한글이 처리되는 'utf8_general_ci’로 변경한다.
7변경 사항 저장 후, RDS 인스턴스 설정에서 이 parameter group 사용하도록 변경변경한 parameter group을 실제 RDS 인스턴스에서 사용하도록 설정을 변경한다.
8RDS 인스턴스 재부팅변경사항을 적용하기 위해 RDS 인스턴스를 재부팅한다.

한글 설정을 완료해준 후, 변경사항 저장을 클릭한다.


9. 한글 설정 데이터 베이스에 적용하기

기본 설정으로는 한글 문자가 제대로 저장되거나 조회되지 않을 수 있다. 이를 방지하고, 한글 데이터를 올바르게 처리하기 위해 데이터베이스에 한글 설정을 적용해야 한다.

생성한 데이터 베이스로 이동 → 추가구성 → 데이터 베이스 옵션 → 파라미터 그룹 → 생성한 korean으로 변경

수정 예약은 즉시 적용으로 해주고, 인스턴스 수정을 클릭한다.


MySQL RDS 서버에 접속

1. RDS 보안그룹의 IP 주소를 등록하여, RDS MySQL 인스턴스에 액세스 권한 설정

데이터베이스에 접근하는 클라이언트나 애플리케이션은 IPv4 또는 IPv6 주소를 사용할 수 있다. 따라서 둘 다 인바운드 규칙에 설정하면, IPv4 또는 IPv6를 사용하는 모든 클라이언트나 애플리케이션에서 데이터베이스에 접근할 수 있도록 할 수 있다.

유형은 모든 트래픽 선택과, 소스는 Anywhere-IPv4, Anywhere-IPv6 둘 다 설정한다.


2. MySQL 연결

커맨드 프롬프트에서 MySQL 클라이언트를 실행해 Amazon RDS MySQL DB 인스턴스에 연결해야 한다.

mysql -h [RDS 엔드포인트] -P 3306 -u [유저 이름] -p
항목설명
유저이름마스터 사용자 이름
비밀번호마스터 사용자 암호

📌 2.1 RDS DB 인스턴스 연결 오류 발생한다면

ERROR 2003 (HY000): Can't connect to MySQL server on [엔드포인트]

보안 그룹 설정 문제로 발생할 수 있다. 보안 그룹 설정에서 인바운드 및 아웃바운드 트래픽 규칙 설정을 재확인해야 한다.


3. 연결 확인

📌 연결에 실패한다면 꼭 확인해볼 것

꼼꼼하게 설정하고 있는데 자꾸 에러가 발생했다. 1시간 가량.. Test Connection..

  1. 퍼블릭 액세스 가능하도록 설정했는지?
  2. 서브넷 private 설정을 해지했는지?
    1. RDS 서브넷 정보 확인 → VPC → 라우팅 편집 → 인터넷 게이트웨이 라우팅 추가

서브넷 설정은 다른 블로그에 검색해보면 잘 나와있을 것이다. 🫥


🥳 생성 완료

등록할 때 지정해주었던 데이터 베이스가 생성되어 있음을 확인할 수 있다.

덕분에 AWS RDS 공부도 조금..(?) 해보고 좋은 것 같다..


✏️ 궁금한 것 잠깐 정리

설명내용
VPC (Virtual Private Cloud)AWS에서 제공하는 가상 네트워크 서비스로, 가상 네트워크 안에서 자신만의 IP 주소 범위를 선택하고, 서브넷을 생성하고, 라우트 테이블과 네트워크 게이트웨이를 설정할 수 있다.
서브넷 (Subnet)IP 네트워크의 일부로, 네트워크를 논리적으로 나누는 방법이다.

VPC

아래 그림처럼 VPC 내부에 RDS를 생성하면, 외부로부터 직접 RDS로의 접근을 막을 수 있다. 그리고 동일한 VPC 내에 EC2를 통해 애플리케이션 서버를 설치하고, 이 애플리케이션 서버만 RDS로 접근할 수 있도록 할 수 있다.

profile
Strong men believe in cause and effect.

0개의 댓글