DevOps

AWS RDS(Relational Database Service) 기본

팅리엔 2021. 1. 3. 21:59

AWS RDS에서는 다음 데이터베이스 엔진 중 하나를 선택하여 데이터베이스 인스턴스를 생성할 수 있다.

MySQL, MariaDB, Oracle, PostgreSQL, Amazon Aurora, Microsoft SQL

 

데이터베이스 옵션 그룹

데이터베이스 엔진에 따라 데이터 및 데이터베이스 관리와 보안 강화를 위한 추가 기능이 있다. 옵션 그룹을 사용하여 그런 기능들을 구성하고 활성화 한다. MySQL은 사용자 로그인과 쿼리 활동을 기록하는 감사 플러그인과 Memcached 인터페이스 사용을 지원한다. 옵션을 실행하려면 추가 메모리가 필요하므로 충분한 메모리가 있는지 확인해야 한다.

 

 

데이터베이스 파라미터 그룹

파라미터 그룹에서는 데이터베이스 인스턴스와 데이터베이스 환경 설정을 위한 파라미터를 지정한다.

 

  • time_zone: Asia/Seoul
  • character_set_client, character_set_connection, character_set_database, character_set_filesystem, character_set_results, character_set_server : utf4mb8
  • collation_connection, collation_server: utf8mb4_general_ci
  • max_connection

 

* MySQL 환경변수 확인하기: show variables;

 

 

데이터베이스 인스턴스 클래스

RDS는 다양한 성능 요구 사항을 충족하는 다양한 데이터베이스 인스턴스 클래스를 제공한다.

참고: docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html

  • 표준
    • 일반적인 데이터베이스의 경우
    • db.mb4 등
  • 메모리 최적화
    • 높은 처리 성능이 필요한 데이터베이스의 경우
    • db.x1e 등
  • 순간 확장 가능
    • 개발, 테스트 데이터베이스의 경우
    • db.t2 등

 

데이터베이스 인스턴스 스토리지

데이터베이스 인스턴스는 EBS(Elastic Block Store)를 사용한다. RDS는 필요한 스토리지 용량에 따라 자동으로 데이터를 여러 EBS 볼륨에 나누어 저장해 성능을 강화한다.

 

  • 범용 SSD
    • RDS는 기본적으로 1GB당 3IOPS 성능을 볼륨에 할당한다.
    • 필요한 IOPS를 얻기 위해 스토리지를 과도하게 할당하지 않아도 된다. 1TB 미만 볼륨은 일시적으로 3,000IOPS까지 순간 확장할 수 있다. 데이터베이스 인스턴스가 처음 시작될 때 5,400,000IOPS의 크레딧을 갖게 되는데 크레딧에서 차감하여 순간 확장 기능을 사용한다.
  • 프로비저닝된 IOPS SSD
    • 순간 확장 기능이 없다.
    • 일정한 성능이 필요한 경우.
  • 마그네틱 스토리지

 

IOPS(Input/Output Operatons Per Second)를 사용해 스토리지 성능을 측정하는데, IOPS가 큰 데이터베이스가 데이터를 저장하고 검색하는 속도가 빠르다. 데이터베이스 스토리지의 속도는 할당된 IOPS 수에 제한된다.

MySQL의 페이지 크기는 16KB으로, 하나의 I/O 작업은 16KB의 데이터 쓰기로 구성된다. 데이터베이스가 초당 102,400KB(100MB)의 데이터를 읽어야 한다면 이를 위해 데이터베이스는 초당 6,400페이지를 읽어야 하고, 인스턴스 스토리지와 인스턴스 클래스는 6,400IOPS를 유지해야 한다.

 

 

읽기 전용 복제본

  • 수평 확장(Scale Out)하기.
  • 마스터 데이터베이스는 데이터 쓰기만을 수행하고, 읽기 전용 복제본은 데이터 읽기만을 수행해서 인스턴스의 쿼리 부하를 줄인다.
  • 최대 5개의 읽기 전용 복제본을 만들 수 있다.
  • 데이터가 마스터로부터 모든 읽기 전용 복제본에 비동기로 복제되므로 시간 지연이 있다. 따라서 읽기 전용 복제본을 재해 복구에 사용하지는 않는다.
  • 읽기 전용 엔드포인트가 있어, RDS가 읽기 전용 복제본 중 하나에 연결해 로드밸런싱 한다.
  • 마스터 인스턴스와 읽기 전용 복제본을 서로 다른 가용 영역에 둘 수 있다.
  • 마스터 인스턴스에 장애가 발생하면 읽기 전용 복제본을 마스터로 지정할 수 있지만 비동기 복제이기 때문에 어느 정도 데이터 손실이 있을 수 있다.

 

예비 인스턴스

  • 기본 데이터베이스 인스턴스와 다른 가용 영역에 예비 인스턴스를 둔다. 기본 인스턴스가 중단되면 RDS는 2분 이내에 엔드포인트의 DNS 레코드가 예비 인스턴스로 향하도록 변경한다.
  • 인스턴스를 만든 후에 다중 AZ를 활성화하면 성능이 떨어진다.
  • 주 인스턴스에서 예비 인스턴스로 데이터를 동기식 복제한다.
  • 복제시 시간 지연이 발생할 수 있으므로 EBS 최적화 인스턴스와 프로비저닝된 IOPS SSD 스토리지를 사용해야 한다.
  • 예비 인스턴스는 읽기 전용 복제본이 아니다. 읽기 트래픽을 처리하지 않는다.

 

백업 및 복구

RDS는 데이터베이스 인스턴스의 EBS 볼륨 스냅샷 기능을 제공한다.

스냅샷을 하면 일시적으로 모든 I/O 작업이 중단되므로 사용량이 적은 때에 스냅샷을 생성해야 한다.

 

자동 백업

  • 자동 스냅샷은 매일 생성되어 보존 기간(1~35일, 기본 7일)만큼 보관된다.
  • 자동 스냅샷을 사용하지 않으려면 보존 기간을 0으로 설정한다.
  • 특정 시점 복구가 가능하다.
  • 데이터베이스 인스턴스를 삭제할 때 자동 백업을 유지하지 않기로 하면 자동 스냅샷은 즉시 삭제된다.
    최종 스냅샷과 수동 스냅샷은 삭제되지 않는다.
  • 실행중인 데이터베이스 인스턴스를 스냅샷으로 교체하는 것이 아니라 새 인스턴스로 복구하는 것이다.