-
[AWS] RDS 실습 (RDS인스턴스 생성 / MySQL 연결)AWS 2024. 2. 11. 17:20
RDS 페이지로 접속한다. 지역도 서울로 되어있는지 확인한다.
데이터 베이스 생성 버튼을 눌러준다.
데이터베이스 생성
데이터베이스 생성 방식 선택
표준 생성을 사용해서 다양한 데이터베이스 설정을 직접해준다.
엔진 옵션
다양한 DB 엔진이 있다.
AWS는 default로 PostgreSQL이 선택되어져있다.
본 실습은 MySQL로 진행
에디션은 MySQL Community / 엔진 버전은 default로 진행
템플릿
프리 티어를 선택.
위 DB 엔진에서 Aurora DB엔진을 선택하게 된다면 템플릿에서 프리 티어 옵션은 없다.
가용성 및 내구성
템플릿을 프리 티어 옵션으로 선택했기 때문에 변경 권한이 없다.
만약 템플릿을 프로덕션으로 바꾼다면 Multi-agent 기능을 활성화 시킬 수 있다.
설정
DN 인스턴스 식별자 : AWS RDS 인스턴스 이름
자격 증명 설정
⭢ 마스터 사용자 이름 :
⭢ 마스터 암호 :
사용자가 직접 암호를 설정하지 않고 AWS에서 직접 생성하는 암호를 가지고 사용할 수도 있다.
인스턴스 구성
프리 티어를 선택했기 때문에 "버스터블 클래스" 이외 선택할 수 없다.
만약 프로덕션으로 바꾼다면 선택의 폭은 넓어진다.
✡ 버스터블 클래스란? 상황에 따라서 CPU의 성능을 버스트 시킬 수 있다는 뜻
밑 select에서 t3가 그 중에 하나
스토리지
만약 스토리지 유형이 범용 SSD(gp2)로 되어있지 않다면 이걸로 바꿔준다.
다른 gp3가 신규 스토리지 유형 : 추가 비용을 냄으로써 IUPS 처리량을 늘릴 수 있다.
사용 용기에 따라 알맞게 옵션을 선택하면 된다.
할당된 스토리지 : 최소의 시스템
스토리지 자동 조정 : Auto 스케일링을 뜻함
자동 조정기능 defualt로 설정함
연결
컴퓨팅 리소스 : EC2 인스턴스를 직접 만들어서 연결시킬 수 있다.
본 실습에서는 EC2 컴퓨팅 리소스에 연결을 눌러 EC2 인스턴스 생성버튼을 눌러서 만들어논 인스턴스 연결한다.
VPC 와 서브넷 그룹은 default
VPC 보안 그룹
새로 만들어도 되고, 기존을 사용해도된다.
새로 만들어보자
가용영역
변경권한이 없다.
추가 구성
데이터베이스 포트
MySQL 포트인 3306으로 되어있는지 확인
데이터베이스 인증
암호 인증을 선택해 위에서 만든 마스터 사용자와 암호로 데이터베이스로 접속하게끔
모니터링
건너띄기
추가 구성
데이터베이스 옵션
초기 데이터베이스 이름 설정
나머지는 default
Estimated Monthly costs
Finally ! 데이터베이스 생성을 누르면 생성이 된다
생성한 RDS의 엔드포인트를 확인해준다(복사해둔다).
EC2 인스턴스로 실행하기
퍼블릭 IPv4 주소를 복사해서 새탭에서 열어보면 PHP Info 페이지가 보이게 된다.
RDS 인스턴스 접근을 위한 환경 설정
터미널을 연다.
https://eocoring.tistory.com/22
[AWS] EC2 실습 (인스턴스 생성/Apache/간단한페이지생성)
EC2는 EC2 대시보드에 들어가면 오른쪽 상단에서 지역설정을 해줘야한다. 만약 EC2인스턴스를 서울에서 만들었다면 다른 지역에서는 사용할 수가 없다. 주황색 인스턴스 시작 버튼을 눌러준다. (
eocoring.tistory.com
지난 실습에서 해준것처럼 EC2인스턴스에 접근을 해준다.
sudo su cd /var/www/html
root 계정으로 접속 변경을 해주고
html 문서로 이동을 해준다.
ls
connect.php index.php
ls 명령어를 통해 파일을 조회해주면 이렇게 두개의 파일이 보여지게 된다.
nano connect.php
connect.php을 수정하기 위해서 파일을 열어준다.
여기서 hostname을 RDS 생성하고 생성자로 들어가서 확인하고 복사한 엔드포인트로 수정해준다.
⟡ 주의 : "" 안에 넣어준다.
저장을 하고 나간다.
다시 웹브라우저로 가서 /connect.php를 붙혀서 다시 들어가보면 "MySQL에 연결할 수 없습니다"라고 설정해둔 에러메세지가 보인다.
현재 RDS 보안그룹은 RDS 인스턴스 안에서만 존재하며 EC2 인스턴스의 보안그룹과 별개다
두개의 서로 다른 클라우드에서 다른 보안 그룹이 존재하고 있다. 따라서 이둘은 불통
⮕ 소통이 가능하게끔 설정을 변경해줘야한다.
RDS 인스턴스에 보안 그룹 규칙을 확인해본다.
아까 생성해준 보안그룹을 선택한다 위사진에서 가운데
그러면 EC2로 건너오며 보안 그룹 항목으로 들어왔다.
밑에 인바운드 규칙을 눌러서
MySQL 포트의 3306이 추가되어있는지 확인해야한다.
인바운드 규칙 편집 버튼을 눌러준다.
하나있는 보안 그룹 규칙의 소스를 지우고 sg라고 검색을 하면 위에서 EC2 인스턴스가 속해 있는 보안 그룹을 찾아서 연결해준다.
그러면 에러.
메세지 : 기존 IPv4 CIDL 규칙에 a 참조된 그룹 아이디를 지정할 수 없습니다.
현재 보안 그룹 규칙 아이디를 지우고, 똑같은 것을 그대로 만들어줬다.
MySQL 버전이 8.0으로 업그레이드되면서 생긴 변경사항 MySQL의 디폴트 charset은 utf-8.0 mb4 포맷이다.
이는 php를 포함해 많은 프로그램 언어에서 인식되어지지 않는다. 우리가 사용해야하는 포맷은 utf-8이다.
따라서, 이것으로 바꿔줘야한다.이는 두가지 작업을 해야한다.
첫번째, 터미널로 가서 ect 폴더 안에 있는 my.cnf파일을 열어준다.
nano /ect/my.cnf
그러면 이렇게 bash와 같은 간단한 환경 설정이 짜여있다.
여기서 변경을 해야한다.
[mysqld]라는 항목에서
collation-server=utf8_unicode_ci character-set-server=utf8
위 두가지를 반드시 넣어준다.
그리고 [mysql]라는 키를 하나 더 만들어준다.
[mysql] default-character-set=utf8
그리고 이렇게 추가하고
저장하고 파일에서 나간다.
두번째 작업을 하기위해 AWS 콘솔으로 간다.
RDS에서 파라미터 그룹을 click
RDS 인스턴스를 만들면서 두가지의 파라미터 그룹이 자동으로 생성되었다.
이것들은 변경할수 없다.
그렇기 때문에 새로운 파라미터 그룹만들어줘야한다.
파라미터 그룹 패밀리 : mysql8.0
유형 : 유형 Parameter Group
그룹 이름과 설명 : 쉽게 "awslearner"라고 해줬다.
awslearner 파라미터 그룹으로 들어간다.
여기서 4가지의 파라미터 값을 바꿔야한다.
검색창에 검색 "character"
- character_set_client
- character_set_connection
- character_set_database
- character_set_server
이 4가지를 utf8로 변경해야한다.
파라미터 편집 버튼을 눌러서 utf로 변경해주고 변경사항을 저장한다.
파라미터가 변경된 동시에 RDS 인스턴스가 자동중으로 수정중 모드에 들어갔다.
RDS 인스턴스로 돌아가서 수정버튼을 눌러준다.
DB파라미터 그룹에서 아까 생성한 그룹 awslearner 그룹을 선택해준다. ⭢ 계속 ⭢ 수정예약에서 즉시 적용을 선택하고 ⭢ DB 인스턴스 수정
위 수정사항들을 적용시키기 위해 인스턴스를 재부팅해야한다 !
RDS 인스턴스를 선택한 후 인스턴스를 재부팅 한다.
이제 php info 페이지로 돌아가서 새로고침을 한다.
그러면 이렇게 RDS 인스턴스가 MySQL에 연결되었다는 메시지를 확인할 수있다.
'AWS' 카테고리의 다른 글
[AWS] S3 (0) 2024.02.12 [AWS] RDS 실습 (다중 AZ와 읽기전용/스냅샷&Point in time 복원 ++ EC2&RDS 인스턴스 삭제) (0) 2024.02.11 [AWS] RDS - ElastiCache (0) 2024.02.11 [AWS] RDS - Multi AZ, Read Replicas (0) 2024.02.11 [AWS] RDS - Database Backups (0) 2024.02.11