생활 코딩을 참고하며 정리한 내용입니다.
RDS
: Amazon Relational Database Service
✔️ 수업에서는?
여러가지 RDS을 지원한다. (현재는 MySQL을 선택한다.)
DB 인스턴스 클래스
스토리지 : 데이터를 저장하는 디스크
인스턴스를 여러 개 만들었을 때 각각의 인스턴스 이름이 필요한데, 그 때 사용되는 이름을 지정할 수 있다.
VPC
: AWS안에서 외부로부터 독립된 안전한 네트워크를 구성하는 서비스
- RDS 네모 박스가 보안 그룹이다.
- 안에 EC2, RDS
- VPC를 통해 RDS, EC2 외부 접속을 막을 수 있어 안전해진다.
- EC2 인스턴스를 만들어서 RDS 사용할 것이라면 외부에서 접속할 수 없도록 하는 것이 더욱 안전한 방법이다.
- RDS를 사용해서 외부에서 RDS를 이용하게 하려면 (AWS 서비스가 아닌 것을 이용하게 하려면) 외부에서 인터넷을 접속할 수 있게 하는 것이 가장 단순한 방법이다.
생성되었다!
✔️ 클라이언트가 db서버에 접속하려고 할 때
security group
: aws에서는 서비스 차원에서 제공하는 방화벽 기능
✏️ 두 가지 상황이 발생할 수 있다.
(1) 클라이언트가 접속할 수 있는 소스를 제약한다.
- 특정 ip를 가진 클라이언트만 접속할 수 있게 한다.
- 누구나 접속할 수 있게 한다.
(2) 클라이언트가 서버에 접속할 때, 여러 서버가 설치되어 있을 수 있다.
- port : 클라이언트가 어떤 서버에 접속할 것인지 지정하는 것
- 클라이언트는 개방되어있는 port 서버에만 접속할 수 있게 할 수 있다.
✔️ 보안 그룹 적용(인바운드 적용) 한 후, 생성한 RDS mysql에 바로 접속 하기
RDS도 결국에는 EC2위에서 돌아간다.
📣 인바운드 vs 아웃바운드
- 인바운드 : 데이터베이스 서버 입장에서 안으로 들어오는 것
- 아웃바운드 : 데이터베이스 서버 입장에서 응답하는 것
➡️ 클라이언트를 허용하려면 인바운드를 설정해야한다. (아웃바운드 세팅하지 않아도 자동으로 된다.)
RDS에서 생성한 mysql DB 접속
성공!
현재는 아무도 접속할 수 없는 상태이다.
✔️ 인스턴스 생성
ssh
인바운드 보안 그룹 규칙22번 port
: ssh
, command line
을 통해서 unix
, macOS
, linux
와 같은 운영체제를 원격제어할 수 있는 방법을 사용하려고 할 때 22번을 지정한다.
✔️ 이제 EC2 가상서버에서
ssh -i key값 ubuntu@주소
로 가상서버 접속
sudo apt-get update
: 업데이트 한 번 한다.
sudo apt install mysql-client
: mysql 설치
RDS 엔드포인트를 통해
mysql에 접속을 하려고 하는데, 접속이 되지 않는다.
🔊 접속이 안되는 이유
RDS
,EC2
는 같은VPC
안에 소속되어 있지만,EC2
가RDS
에 접속하려면security group
을 통해 허용되어야 한다!
✔️ EC2 → RDS sercurity group
허용하기
EC2 주소를 보안그룹 인바운드에 등록해야한다.
(1) EC2 퍼블릭 IP 주소를 (RDS Security group)인바운드에 등록해도 된다.
(2) EC2인스턴스가 소속되어있는 Security group을 RDS Security group 인바운드 소스에 등록한다. 👈🏽 이걸 사용!
RDS 보안 그룹에서
EC2 인스턴스
에 속해 있는 Security group
에 속해 있는 머신들이 RDS
(Security group
)로 누구나 접속할 수 있게 하려면
EC2
인스턴스에 속해 있는 Security group
의 id
를 RDS Security group
id
에 등록해야한다!
RDS 인바운드 규칙 편집
이제, RDS가 속해있는 Security group에는 EC2가 속해있는 Security group의 머신들은 누구나 접속할 수 있게 허용한 것이다!
(1) 이전, security group 설정하기 전까지는 mysql 실행했을 때는 실행이 되지 않았다!
(2) 현재는 security group 설정한 후, mysql 실행했을 때 정상적으로 실행이 된다.
📌 정리
- 안전하게 RDS에 접속할 수 있는 방법이다!
- 이제 EC2만 접속할 수 있게 되기 때문에, 안전하다!
- 항상 EC2를 경유해서 RDS를 접속해야되는 불편함이 있다.
- 다만, 안전함이 최우선이다!
CloudWatch
- AWS 인프라 상황을 감지할 수 있는 독립된 서비스
- 컴퓨터의 하드웨어를 감시한다.
- DB 상태를 확인하는 방법
CPU 사용률
: RDS가 돌아가는 컴퓨터의 CPU 점유율 (실시간 서버가 아니다.)
DB 연결
: 클라이언트 DB서버에 접속할 때, 접속하나하나가 연결이다. 만약, 선이 그래프를 꽉차게 되면, 성능에 많은 영향을 미치기 때문에, 매우 중요하다!
여유 스토리지 공간(MB)
: DB가 가득찼다면, DB를 사용할 수 없어 조치를 취해야 한다.
사용 가능한 메모리(MB)
: 메모리가 가득찼다면, 속도가 매우 느려진다.
IOPS
: 초당 입력, 출력의 성능이다. (저장장치 성능을 파악할 때 많이 사용한다.)
💡 참고
(1) 확장 모니터링
확장 모니터링 : DB 서버가 설치되어있는 운영체제 안에 프로그램을 설치하여 프로그램이 실시간으로 현재 상태를 전송해준다.
- 1초 간격
- 기능을 켜야 사용가능하다.
- 유료이다.
- 성능 차이 : 확장 모니터링 > cloudwatch
(2) OS프로세스 목록
OS프로세스 목록 : 현재 OS상에서 설치, 실행되고 있는 프로세스 목록들이다.
무엇보다 수 감각을 익히는 것이 중요하다!
수 감각을 익혔다면, 정확한 의사 결정을 할 수 있다!
수업은 백업과 복원 감각 위주
13:56-14:26 UTC (GMT)
까지 복원이 가능하다!
✔️ 스냅샷 백업
스냅샷 : 현재 백업된 인스턴스가 저장되어 있다.
스냅샷 생성
스냅 샷 생성되면서, 사용하는 db 형식에 따라서 db가 잠시 꺼지는 down time이 발생할 수 있다.
서비스를 켜놓고 백업을 진행하면서 서비스가 잘돌아가는지 체크하는 것도 필요할 것이다.
✔️ 스냅샷 복원
백업을 복원할 때 스냅샷을 선택하여, 세부 정보에서 스냅샷 복원을 선택한다.
인스턴스 생성하는 화면이 나온다.
특정한 시기로 정확하게 돌아가고 싶다면, 자동 백업을 사용한다!
💡 참고
RDS
의 인스턴스를 자동으로 백업을 설정할 시, 해당 인스턴스을 삭제하면 자동 백업된 데이터도 삭제된다.RDS
의 인스턴스를 수동으로 백업을 설정할 시, 해당 인스턴스를 삭제해도 자동 백업된 데이터가 삭제되지 않는다.
- 나중에라도 백업 데이터를 이용하여 복원할 수 있다.
RDS 인스턴스를 삭제할 때, 스냅 샷을 삭제할 것인지 묻는 경우가 있는데, 스냅 샷은 왠만하면 지우지 말자! (실수를 방지하기 위해!)
백업과 복원이 있는데 복원은 그 무엇보다 중요하다!
RDS에 있는 DB에 따라 각각 다르다.
현재는 mysql을 기준
MySQL 서버는
✔️ 온디맨드 DB 인스턴스
컴퓨터 사양에 따라 가격 체계 다중 AZ, 단일 AZ로 구분된다.
단일 AZ
: 하나의 건물에 DB서버와 데이터를 저장한다.다중 AZ
: 두개 독립된 건물에 동시 분산한다. (훨씬 안전하다.)
✔️ 예약 DB 인스턴스
✔️ 데이터베이스 스토리지
범용SSD 스토리지
프로비저닝 IOPS(SSD) 스토리지
💡 참고
- 속도가 중요한 DB라면 프로피버징을 사용
- 속도보다는 분산되어 있는 데이터베이스라면 범용 SSD 스토리지를 사용한다.
✔️ 백업 스토리지
데이터를 백업할 때 사용하는 것이다!
10GB DB를 구매했을 경우, 10GB까지는 백업된 데이터를 보관했을 때 공짜이다.
✔️ 요금
aws 외부에 전송
aws 내부에 전송
AWS 프리 티어는 모든 AWS 서비스 및 리전을 합산해 매달 100GB의 무료 인터넷 데이터 송신 혜택을 받게 된다.
'데이터베이스를 삭제하려면 데이터베이스를 수정하여 삭제 방지 기능을 비활성화 합니다.'
라고 나왔을 경우
한 후, 삭제를 한다.
✔️ 삭제 과정
✔️ Multi Availability Zones
데이터베이스 사향을 높이는 것이 쉽지 않은 일이다.
RDS을 이용하면 사향 높이는 것이 그렇게 어려운 일이 아니다.
✔️ Scale Up vs Scale Out
Scale Up
Scale Out
✔️ Amazon Aurora
✔️ RDS는