안녕하세요! 이 글에서는 RDS가 무엇인지, 또 EC2 인스턴스와 RDS를 연동하는 방법에 대해 소개하고 있습니다.
RDS란?
RDS(Relational Database Service)란 AWS클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장을 할 수 있는 서비스입니다.
인스턴스 정보 확인
먼저 연동하고자 하는 인스턴스의 정보를 인스턴스 요약 화면에서 확인하겠습니다.
VPC ID, 서브넷 ID를 복사해 메모장 등에 메모하시길 권유드립니다.
밑에 보안 탭에서 보안 그룹도 복사하여 메모해두세요.
보안그룹 생성
AWS EC2에서 네트워크 및 보안에서 보안그룹을 클릭해 주세요.
우측 상단의 보안 그룹 생성을 클릭해 주세요.
이름을 입력하고 VPC 정보가 연동하고자 하는 EC2인스턴스와 일치하는지 확인합니다.
메모장에 남긴 vpc와 같으면 됩니다.
저는 테스트용 배포라 이름은 ds-ec2-connect, 설명은 rds-ec2-connect이렇게 적었습니다.
인바운드 규칙에서 DB 유형을 선택하고 소스 옆 칸에 자신의 인스턴스의 보안 그룹 명을 입력해주세요.
보안 탭에서 확인한 보안 그룹과 같으면 됩니다.
그리고 맨 아래 보안 그룹 생성 버튼을 클릭하여 보안 그룹을 생성합니다.
RDS 생성
aws웹 검색창에 RDS를 검색하여 들어갑니다.
그 후 좌측의 서브넷 그룹을 클릭해 주세요.
DB서브넷 그룹 생성을 클릭합니다.
여기서도 ec2에서 사용하고 있는 vpc를 선택합니다.
서브넷 가용 영역은 모두 체크해주세요.
서브넷도 마찬가지로 모두 체크합니다.
파라미터 그룹 추가
한글 사용과 DB시간을 한국 시간으로 설정하기 위해서 파라미터 그룹을 추가하겠습니다.
좌측 메뉴에 서브넷 그룹 밑, 파라미터 그룹을 클릭
파라미터 그룹 생성을 클릭합니다.
다음과 같이 입력하고 파라미터를 생성합니다.
방금 생성한 파라미터 그룹을 클릭 - 편집을 클릭합니다
필터링에 char를 입력하고 데이터 형식이 String인 파라미터에 모두 utf8mb4을 입력해주세요
utf8mb4는 이모지를 저장할 수 있습니다.
time_zone은 Asia/Seoul을 입력합니다.
collation을 검색하고 나온 모든 파라미터(2개)를 utf8_general_ci로 바꿉니다.
DB생성하기
좌측의 메뉴에서 데이터베이스를 선택해주세요
데이터 베이스 생성 버튼을 클릭해 주세요
다음과 같이 선택합니다.
자신의 mysql 버전과 가장 가까운 버전을 선택해주세요
버전은 cmd에서 mysql 프롬프트로 접속 후 SELECT VERSION(); 명령을 통해 확인할 수 있습니다.
VPC는 맨 처음 확인한 VPC,
서브넷은 아까 만든 서브넷,
보안그룹도 아까 만든 rds로 해주세요
이제 다른 설정들은 건드리지 않고, 데이터 베이스 생성을 클릭합니다.
db가 생성중일 겁니다.
조금 기다리셔야 합니다 😙
접속하기
이제 만든 인스턴스를 클릭하고,
확인되는 엔드포인트로 db에 접속할 수 있습니다.
키페어가 있는 경로에서 터미널을 열고
ssh -i "[키페어 이름].pem" ubuntu@[ec2 IPv4 주소]
mysql -uadmin -p --host [엔드포인트]
하고 비밀번호를 입력하면 엔드포인트로 db에 접속할 수 있습니다.
지금까지 사용했던 db처럼 사용하시면 된답니다!!
connect error 해결 방법
진행 과정에서
Can't connect to MySQL server on '....rds.amazonaws.com:3306' (51)
이런 에러가 발생하실 수 있습니다
이 에러의 원인은 DB 인스턴스 생성시 자동으로 생성된 보안 그룹에 있는 DB 인스턴스에 접근하기 위한 권한을 부여한 수신 IP주소의 동기화 문제라고 합니다.
이 에러를 해결하기 위한 방법을 알려드리겠습니다.
[EC2] - [보안그룹] - 아까 만든 rds 보안 그룹을 클릭
그리고 인바운드 규칙 편집을 클릭합니다.
원래 있는 설정은 삭제하지 마시고, 다음과 같이 인바운드 규칙을 생성 후 규칙 저장을 클릭합니다.
'Deploy > AWS' 카테고리의 다른 글
[AWS] AWS S3를 알아보고 버킷 만들어보기 (1) | 2024.04.27 |
---|---|
[AWS] RDS로 MySQL 배포하기 (1) | 2024.03.07 |
ssh 원격 접속할 때 (WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!) (0) | 2023.11.18 |
[AWS] EC2로 node.js 웹 서버 배포하기 / Nodejs SyntaxError: Unexpected token '(' 에러 해결 (0) | 2023.10.30 |
[AWS] Elastic Beanstalk로 서버 배포 했을 때 502 Bad Gateway 해결하기 (0) | 2023.07.23 |