RDS & Aurora

이기태·2024년 4월 20일
0

AWS

목록 보기
14/62

백업과 모니터링

  • RDS 백업
    • RDS 백업은 DB 백업 기간동안 자동화로 전체 백업
      5분마다 트랜잭션 로그 백업 -> 가장 빠른 백업 = 5분전 백업
      백업 보존 기간: 1~35일(0으로 설정하면 비활성화)
    • 수동 DB 스냅샷
      사용자가 수동으로 트리거
      장점: 원하는 기간동안 유지할 수 있다.
      자동 백업 = 만료 기간이 있음, 수동 백업 = 삭제하기전까지 남아있음
    • 백업 시기
      내가 원할때 백업할수 있지만 비용을 줄이기위해 백업하기도 함
      • RDS DB가 있고 한달에 2시간만 사용한다면
        DB를 중지하더라도 스토리지 비용은 계속 지불
        그래서 2시간만 사용 후 스냅샷을 만든 다음, DB를 삭제하면 스냅샷이 실제 스토리지보다 저렴하기 때문에 비용을 절약할 수 있다.
  • Aurora 백업
    • RDS와 동일하게 자동화로 전체 백업
      1~35일 기간설정 가능(비활성화 불가능)
      시점 복구 기능(해당 기간 어느 시점으로든 이동 가능)
    • 수동 DB 스냅샷
      사용자가 수동으로 트리거
      장점: 원하는 기간동안 유지
  • RDS & Aurora 복원 옵션
    • RDS & Aurora의 백업/스냅샷은 같다
      새 DB로 복원 가능
    • S3에서 MySQL를 복원할 수 있다.(RDS)
      온프레미스 DB의 백업을 생성한 후 S3에 배치
      RDS에는 MySQL을 실행하는 새 인스턴스로 S3에서 백업 파일을 복원하는 옵션이 있다.
    • MySQL Aurora 클러스터로 복원할 수 있다.(Aurora)
      온프레미스 DB를 다시 백업하면 된다.(Percona XtraBackup이라는 프로그램을 통해)
      -> Percona XtraBackup의 백업 파일을 S3로 보내 백업을 복원
    • 차이점
      RDS = MySQL로 복원할 때는 DB의 백업만 있으면 된다.
      Aurora = Percona XtraBackup로 백업 후 S3에서 백업.

Aurora DB 복제

  • 기존 DB 클러스터에서 새로운 Aurora DB 클러스터를 생성 가능하다.
    테스트하고 싶을때 사용
    스냅샷 찍고 복우너하는 것보다 빠르다.
    • 왜?
      복제는 copy-on-write 프로토콜을 사용하기 때문
    • 과정
      처음 복제본을 만들 때는 원본 DB 클러스터와 동일한 데이터 볼륨을 사용하게 된다. -> 데이터를 복사 하는것이 아니기 때문에 빠르고 효율적
      프로덕션 Aurora DB 또는 스테이징 Aurora DB에 업데이트가 이루어지면 새로운 추가 스토리지가 할당되고, 데이터 복사 및 분리된다.

      DB 복제는 빠르고 비용 효율적이고, 프로덕션 DB에 영향을 주지 않고, 프로덕션 DB를 복제하는데 매우 유용
      스냅샷과 복원 기능이 필요 없다.

RDS & Aurora 보안

  • RDS & Aurora DB에 암호화할 수 있다.
    DB를 처음 실행할 때 KMS를 사용해 마스터와 모든 복제본을 암호화
    마스터를 암호화하지 않으면 복제본도 암호화할 수 없다.
    DB를 만들고 암호화를 하고 싶다면 스냅샷을 찍고 암호화해서 복원해라.
  • DB와 클라이언트간 전송 중 데이터 암호화
    클라이언트는 AWS에서 제공하는 TLS 루트 인증서를 사용해야한다.
    • DB 인증
      사용자 이름과 패스워드로 인증
      IAM 역할을 이용해 인증
  • 보안 그룹
    DB에 대한 네트워크 액세스를 통제
    -> 특정 포트, IP, 보안 그룹을 허용/차단
  • RDS & Aurora는 SSH 액세스할 수 없다.
    관리형 서비스가 있기 때문
    예외) AWS의 RDS 커스텀 서비스를 사용한다면 예외이다.
  • 감사 로그
    시간에 따라 RDS & Aurora에서 어떤 쿼리가 생성되고, DB 확인가능.
    시간이 지나면 자동으로 삭제된다.(장기보관은 CloudWatch Logs 이용)

RDS 프록시

VPC내에 RDS DB를 배포 가능했었다.
또한 완전 관리형 RDS DB 프록시도 배포할 수 있다.

  • 프록시가 필요한 이유
    • 애플리케이션이 DB 내에서 DB 연결 풀을 형성하고 공유할 수 있게 된다.
      애플리케이션을 RDS 인스턴스에 일일이 연결하는 대신 프록시를 통해 하나의 풀로 RDS 인스턴스로 연결
      • RDS 인스턴스에 연결이 많아지면?(시험)
        CPU와 RAM등 DB 자원을 효율적으로 사용하게 되고,
        DB에 개방된 연결과 시간초과를 최소화할 수 있다.
  • RDS 프록시는 완전한 서버리스이다.
    오토 스케일링이 가능해 용량을 관리할 필요가 없다.
    가용성이 높음.
    다중 AZ 지원
  • 장애 조치(시험)
    RDS 기본 인스턴스가 아니라 대기 인스턴스로 실행되고 RDS 프록시를 통해 장애 조치 시간을 66% 줄인다.
    -> 메인 RDS 인스턴스에 장애 조치를 처리하지않고 RDS 프록시에 연결해 장애 조치.
  • 지원하는 DB
    MySQL, PostgreSQL, MariaDB용 RDS 지원
    MySQL, PostgreSQL용 Aurora 지원
  • 애플리케이션의 코드를 변경하지 않아도 되고 RDS & Aurora에 연결하는 대신 RDS 프록시에 연결하기만 하면된다.
  • RDS 프록시는 DB에 IAM 인증을 강제함으로써 IAM으로만 연결하도록 할 수 있다.
    이때 자격증명은 AWS Secret Manager 서비스에 저장된다.
  • RDS 프록시는 퍼블릭 액세스가 절대로 불가하다.
    VPC 내에서만 액세스 가능.(보안 굿)
  • 람다 함수를 사용할때 RDS 프록시가 아주 유용
    람다 함수는 증식: 짧은 시간에 늘어났다 줄어들었다 한다.
    RDS에 접근할떄 람다를 사용하면 정신없으니 RDS 프록시를 사용해 하나의 풀로 RDS에 접근.

0개의 댓글

관련 채용 정보