본문 바로가기

DevOps

[AWS] 관리형 데이터 베이스 (RDS)

   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을 수동으로 추가하여 원래 데이터베이스를 변경했을 때와 다릅니다