확장 가능한 관계형 데이터베이스를 제공하는 RDS

이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30

RDS DB 인스턴스 Read Replica 생성하기

Read Replica는 DB 인스턴스의 읽기 복제본을 만들어 성능을 향상에 쓰입니다(현재 Read Replica는 MySQL만 지원합니다). 서비스에서 읽기 위주의 작업이 많을 경우 Read Replica를 여러 개(최대 5개) 만들어 부하를 분산할 수 있습니다. 즉 쓰기 작업은 마스터 DB 인스턴스에 하고 읽기 작업은 Read Replica인 슬레이브 DB 인스턴스에서 실시한다면 마스터 DB 인스턴스의 부하를 줄일 수 있습니다.

마스터 DB 인스턴스에 쓰기를 하면 자동으로 슬레이브 DB 인스턴스로 데이터가 복제됩니다. 단 쓰기 작업을 실시한 즉시 복제되는 것은 아니며 약간의 시간차가 있습니다.

Multi-AZ 복제와 Read Replica

  • Multi-AZ 복제: 쓰기 작업을 실시한 즉시 예비 인스턴스에 복제됩니다. 따라서 데이터가 항상 일치한다는 것을 보장할 수 있습니다. Multi-AZ 복제는 서비스가 항상 가동해야 하는 가용성(Availability)을 위한 것이지 부하 분산을 통한 성능 향상을 위한 것은 아닙니다. 또한, 예비 인스턴스에서는 읽기 작업을 할 수 없습니다.
  • Read Replica: 쓰기 작업을 실시하면 약간의 시간차를 가지고 복제됩니다. 따라서 데이터가 일치하지 않을 수 있습니다. Read Replica는 읽기 부하 분산을 통해 성능 향상을 위한 기능입니다.

RDS DB 인스턴스(exampledbinstance)의 Read Replica를 생성해보겠습니다. RDS DB 인스턴스 목록(Instances)에서 DB 인스턴스(exampledbinstance)를 선택하고 마우스 오른쪽 버튼을 클릭하면 팝업 메뉴가 나옵니다. Create Read Replica를 클릭합니다.


그림 13-50 RDS DB 인스턴스의 Read Replica 생성

Read Replica를 생성합니다(그림 13-51).

  • Destination Region: Read Replica 인스턴스가 위치할 리전입니다. Read Replica는 여러 리전에 생성할 수 있어, 지역별로 읽기 성능을 향상시킬 수 있습니다. 기본값 그대로 사용합니다.
  • Read Replica Source: Read Replica를 생성할 DB 인스턴스입니다. exampledbinstance가 선택되었는지 확인합니다.
  • DB Instance Identifier: 새로 생성될 Read Replica 인스턴스의 이름입니다. 구분을 쉽게 하기 위해 exampledbinstance-read-1로 입력합니다.
  • DB Instance Class: 생성할 Read Replica 인스턴스의 클래스입니다. Read Replica 인스턴스를 생성할 때 성능이 더 좋은 인스턴스 클래스로 바꿀 수 있습니다. 여기서는 db.t1.micro를 선택합니다.
  • Storage Type: 스토리지 타입입니다. 마스터 DB 인스턴스가 Provisioned IOPS를 사용했다면 여기서 Provisioned IOPS를 선택할 수 있습니다. Standard를 선택하여 일반 스토리지를 사용할 수도 있습니다. 기본값 그대로 사용합니다.
  • Auto Minor Version Upgrade: 자동으로 마이너 버전을 업데이트하는 옵션입니다. 보안 패치나 버그가 수정된 버전을 자동으로 업데이트합니다. 예를 들면 MySQL의 경우 5.6.13을 사용하고 있는데 5.6.14가 나오면 5.6.14 버전으로 업데이트하게 됩니다. 기본값 그대로 사용합니다.
  • Database Port: MySQL 접속 포트 번호입니다. 기본값 그대로 사용합니다.
  • Availability Zone: Read Replica가 생성될 가용 영역(Availability Zone)입니다. 추후 각자 상황에 맞게 리전에 속한 AZ를 선택하면 됩니다. 기본값 그대로 사용합니다.
  • Publicly Accessible: DB를 외부에서 접근할 수 있게 하는 옵션입니다. No로 설정하면 VPC 내부에서만 접근할 수 있습니다. 기본값 그대로 사용합니다.
  • Destination DB Subnet Group: Read Replica 인스턴스가 위치할 서브넷입니다. 기본값 그대로 사용합니다.

설정이 완료되었으면 Yes, Create Read Replica 버튼을 클릭합니다.


그림 13-51 RDS DB 인스턴스의 Read Replica 생성

RDS DB 인스턴스 목록(Instances)에서 Read Replica 인스턴스(exampledbinstance-read-1)가 생성되고 있습니다. 완전히 생성되기까지 약 10~15분 정도 소요됩니다(DB의 용량에 따라 시간은 달라질 수 있습니다).

마스터 DB 인스턴스(exampledbinstance)도 설정을 해야 하기 때문에 Status가 modifying으로 표시됩니다(설정은 약 5분 정도 소요됩니다).


그림 13-52 RDS DB Read Replica 생성 중

Read Replica 인스턴스(exampledbinstance-read-1)가 완전히 생성된 후 세부 내용에 엔드포인트 주소, Read Replica Source, Replication State가 표시됩니다. 제가 생성한 Read Replica 인스턴스의 엔드포인트 주소는 exampledbinstance-read-1.cnlconsezo7y.ap-northeast-1.rds.amazonaws.com:3306입니다.


그림 13-53 RDS DB Read Replica 생성 확인

이 Read Replica 인스턴스의 엔드포인트 주소로 접속하면 마스터 DB와 동일한 데이터를 사용할 수 있습니다. 단 읽기 전용이므로 SQL문의 INSERT, UPDATE, DELETE는 사용할 수 없습니다.

Promote Read Replica
Promote Read Replica 기능은 Read Replica 인스턴스를 새로운 마스터 DB 인스턴스로 승격(promote)시키는 기능입니다. 이 기능을 사용하면 이전 마스터(소스) DB 인스턴스와의 복제 관계는 끊어지고, 별개의 DB 인스턴스가 됩니다.

이 기능을 사용하려면 먼저 자동 백업(Enable Automatic Backups), 백업 유지 기간(Backup Retention Period), 백업 시간(Backup Window)를 설정해야 합니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.