✅ AWS RDS란 ?
✔️ AWS에서 제공하는 관계형 데이터 베이스 서비스
✔️ Amazon RDS를 사용하면 클라우드에서 관계형 데이터베이스를 간편하게 설정, 운영 및 확장할 수 있습니다.
✔️ 애플리케이션에 필요한 빠른 성능, 고가용성, 보안 및 호환성을 제공할 수 있도록 지원합니다.
✅ AWS RDS 특징
✔️ 관계형 데이터베이스를 제공하는 서비스
✔️ 가상머신 위에서 동작
- 내부에서는 EC2 활용 - OS패치, 관리 등은 AWS의 역할
- Aurora Serverless는 Serverless 서비스
✔️ CloudWatch와 연동
- DB 인스턴스의 모니터링(EC2와 동일 ex: 디테일 모니터링, CPU, Storage 사용량)
- DB에서 발생하는 여러 로그(Error Log, General Log 등)을 확인 가능
✔️ VPC 안에서 동작
- 서브넷과 보안그룹지정 필요(이를 통해서 방화벽 역할을 수행한다.
- Storage는 EBS 활용
✔️ Parameter Group
- DB의 설정값들을 모아 그룹화한 개념
- DB 클러스터에 파라미터 그룹을 적용시켜 설정값을 적용
✅ AWS RDS 백업, 복원 및 특정 시점 복구
프로덕션 환경에서 DB 서비스를 사용 한다는 것은 인스턴스 오류나 기타 원치 않는 중단이 발생할 경우 복원할 수 있는 데이터베이스의 실행 가능한 복사본이 있어야 함
RDS에서는 데이터베이스의 수동 백업, 복원 및 특정 시점 복구(PITR)를 수행하는 기능을 가지고 있습니다.
✔️ 데이터 백업
- 자동 백업
- 스냅샷 백업 ( 수동 )
✔️ 데이터 복원
- source sql은 DBMS의 기능인데 API를 통해서도 제공 가능한지 확인 필요
✔️ 특정시점 복구
- RDS는 5분마다 DB 인스턴스의 트랜잭션 로그를 Amazon S3에 업로드합니다
✅ AWS RDS 고가용성 구성
프로덕션 환경에서는 데이터베이스가 고객에게 계속해서 서비스를 제공할 수 있도록 장애가 발생하더라도 가동 중지 되지 않도록
RDS에서는 다중 AZ(가용성 영역)의 형태로 이를 보완합니다.
✔️ 다중 AZ
- 고가용성 보장
- 장애 조치 지원 - 동기식 예비 복제본을 자동으로 프로비저닝하고 유지 관리합니다
- 장애 조치 시 Amazon RDS는 DB 인스턴스의 정식 이름 레코드(CNAME)를 대기 인스턴스로 전환하고, 대기 인스턴스는 새로운 기본 인스턴스로 승격됩니다
✔️ 읽기 전용 복제본
- Amazon RDS는 MariaDB 엔진에 내장된 복제 기능을 사용하여 원본 DB 인스턴스에서 읽기 전용 복제본이라는 특별한 유형의 DB 인스턴스를 생성합니다.
✔️ 확장 작업
- Amazon RDS는 데이터베이스가 애플리케이션의 증가하는 수요를 따라잡을 수 있도록 관계형 데이터베이스의 확장을 관리합니다.
- 컴퓨팅, 메모리, 스토리지 확장 가능
✅ AWS RDS 로깅 / 모니터링
✅ AWS RDS Mariadb workshop
1️⃣ cloudformation 배포 , system manager 세션관리자을 통한 데이터베이스 접속 연결
Workshop을 통해 RDS에서 제공하는 프로덕션 환경에서의 DB 서비스에 대한 여러가지 기능들을 확인해보자.
- cloudformation 파일 다운로드
wget https://mariadb-immersionday.s3.us-east-2.amazonaws.com/mariadb-lab.yaml
- 배포 완료 후 System Manager - 세션 관리자 접속
- Start Session
- 세션 매니저 접속 후 bash
bash
sudo su -l ubuntu
ls
tail -n1 /debug.log
- 완료 후 Mariadb 인스턴스에 연결
CREDS=`aws secretsmanager get-secret-value --secret-id [secretArn RDS 콘솔에서 찾아서 기입] | jq -r '.SecretString'`
export DBUSER="`echo $CREDS | jq -r '.username'`"
export DBPASS="`echo $CREDS | jq -r '.password'`"
echo $DBUSER
echo $DBPASS
# 앤드포인트 RDS 콘솔에서 복사
mysql -h labstack-instance.czcp0qXXXX.us-east-1.rds.amazonaws.com -P 3306 -u$DBUSER -p$DBPASS
✅ AWS RDS Mariadb workshop
2️⃣ 백업 / 복원 / 특정 시점 복구
- 스냅샷 생성 ( RDS- 데이터베이스 - 작업 - 스냅샷 찍기 )
- 미리 생성한 DB 스냅샷을 선택하여 Restore Snapshot 클릭
- 설정값 참고
# DB 인스턴스 식별자 -- labstack-restore-backup
# 메모리 최적화 클래스 선택 - db.r6g.large, vCPU 2개, 16GiB RAM, 네트워크: 4,750Mbps 선택
# 스토리지에서 범용 SS(gp2)를 선택하고 할당된 스토리지에 20Gib를 할당합니다
# 가상 사설 클라우드(VPC) -- labstack-vpc
# 서브넷 그룹 -- mariadb-lab-dbsubnet-<xxxxxxx> 로 시작하는 서브넷 그룹을 선택합니다.
# 공개 접근성 - 아니요를 선택하세요.
# 가용성 영역 - 선호 없음
# VPC 보안 그룹 - 기존 VPC 보안 그룹 선택을 선택 하고 labstack-mariadb-internal(VPC)을 선택합니다.
# 추가 구성에서 데이터베이스 포트 - 3306
# DB 인스턴스 복원을 클릭하세요.
- 먼저 복원된 데이터베이스에서 인스턴스 엔드포인트를 검색해 보겠습니다.
- System Manager 접속 - database 접근 후 데이터 확인
bash
sudo su -l ubuntu
mysql -h labstack-restore-backup.XXX.us-east-1.rds.amazonaws.com -P 3306 -u$DBUSER -p$DBPASS
# checksum 확인
mysql> use employees;
mysql> checksum table employees;
# checksum이 스냅샷 엔드포인트와 동일한지 확인
mysql -h labstack-instance.XXX-east-1.rds.amazonaws.com -P 3306 -u$DBUSER -p$DBPASS
# checksum 확인
mysql> use employees;
mysql> checksum table employees;
3️⃣ 특정 시점 복구
PITR(특정 시점 복구)은 데이터베이스를 지정된 날짜 및 시간의 상태로 복원하는 프로세스입니다.
RDS에서는 콘솔이나 AWS CLI를 통해 이 작업을 수행할 수 있습니다.
Workshop 에서는 콘솔을 사용하여 MariaDB 인스턴스에서 PITR을 실행합니다.
- 세션 관리자 접속
- 복원 가능한 최신 시간 확인
aws rds describe-db-instances --db-instance-identifier labstack-instance --query 'DBInstances[*].[DBInstanceIdentifier,LatestRestorableTime]'
- RDS > 데이터베이스 클릭
특정 시점으로 복원을 클릭
- DB 엔진 - MariaDB 커뮤니티 에디션
- 라이센스 모델 - 일반-공공 라이센스
- 원본 DB 인스턴스 -- labstack-instance
- DB 인스턴스 식별자 -- labstack-pitr-restore
- 메모리 최적화 클래스 선택 (r 및 x 클래스 포함)
- db.r6g.large, vCPU 2개, 16GiB RAM, 네트워크: 4,750Mbps를 선택하세요
가용성 및 내구성을 기본값
스토리지 아래에서 다음 옵션을 선택합니다.
- 스토리지 유형 - 범용(SSD)
- 스토리지 자동 확장 - 스토리지 자동 확장 활성화 선택을 취소합니다.
연결 아래에서 다음을 선택합니다.
- 가상 사설 클라우드(VPC) -- labstack-vpc
- 서브넷 그룹 -- mariadb-lab-dbsubnet-<xxxxxxx> 로 시작하는 서브넷 그룹을 선택합니다.
- 공개 접근성 - 아니요를 선택하세요.
- 가용성 영역 - 선호 없음
- VPC 보안 그룹 - 기존 VPC 보안 그룹 선택을 선택 하고 labstack-mariadb-internal(VPC)을 선택합니다.
- 추가 구성에서 데이터베이스 포트 - 3306
추가 구성 섹션 의 초기 데이터베이스 이름 아래에 "mylab"을 입력합니다. 다른 설정은 기본값으로 둡니다.
특정 시점으로 복원을 클릭하세요.
이제 데이터베이스 대시보드로 다시 리디렉션됩니다. 방금 생성한 데이터베이스가 생성 중 상태 로 표시되어야 합니다 . 이 작업이 완료될 때까지 몇 분 정도 기다리십시오. 완료되면 아래와 같이 사용 가능 상태로 표시됩니다.
복원된 데이터베이스에 로그인하려면 세션 관리자에서 다음 명령을 실행하세요.
mysql -h <restored instance endpoint> -P 3306 -u$DBUSER -p$DBPASS
다음과 유사한 출력이 표시됩니다.
체크섬은 Maria Seequel을 수동으로 추가하여 원래 데이터베이스를 변경했을 때와 다릅니다
'DevOps' 카테고리의 다른 글
[AWS EKS] EKS CSi driver와 NFS provisioner (0) | 2024.03.21 |
---|---|
Core DNS 성능개선 [ nodelocaldns / ndots & FQDN ] (0) | 2024.03.15 |
[AWS EKS] VPC CNI와 Loadbalancer (0) | 2024.03.09 |
[AWS EKS] EKS 중요한 3가지 특징 (4) | 2023.12.03 |
[AWS EKS] EKS 중요한건 꺽이지 않는 안정성 (0) | 2023.12.02 |