본문 바로가기

AWS

AWS 새로운 리전에 RDS 읽기 전용 복제본(Replica) 생성하기

728x90

제공하고자 하는 서비스가 국제적인 규모의 서비스일 경우 EC2서버를 가장 가까운 리전(서울, 싱가포르, 오하이오 등)에 위치시켜서 제공하게 될 것입니다. 

 

DataBase 또한 어느 리전에 두느냐에 따라서, 쓰기/읽기 속도가 많은 차이가 있습니다. 

 

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_ReadRepl.html

 

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_ReadRepl.html

읽기 전용 복제본 작업

docs.aws.amazon.com

이러한 읽기/쓰기 중에서 읽기 시간을 줄이기 위해 AWS 콘솔에서 새로운 리전에 읽기전용 복제본을 생성해보겠습니다.

위의 AWS 도큐먼트를 적극적으로 활용하여 진행하였습니다. 

 

DB 읽기전용 복제본을 만들기 전에 몇 가지 알면 좋은 점이 있습니다.

 

1. 복제시 트래픽 비용

리전이 다르기 때문에 원본 AWS리전을 벗어나 데이터를 전송하면 데이터 트래픽 비용이 발생합니다.

 

2. 읽기 개수의 제한

AWS MySQL DB 인스턴스 1개에 5개까지 읽기 전용 복제본을 생성할 수 있습니다.

만약 읽기 전용 복제본을 더 늘리고 싶다면, 복제본을 사용해 읽기 전용으로 복제할 수 있습니다.

MyDBInstance에서 ReadReplica1을 생성한 후 다시 ReadReplica1에서 ReadReplica2를 생성할 수 있습니다. MyDBInstance의 업데이트는 ReadReplica1에도 복제되며, 다시 한번 ReadReplica1에서 ReadReplica2로 복제됩니다. 하지만 복제 체인에 포함될 수 있는 인스턴스는 최대 4개로 제한됩니다. 예를 들어 MySourceDBInstance에서 ReadReplica1을 생성한 후 다시 ReadReplica1에서 ReadReplica2를 생성하고, ReadReplica2에서 ReadReplica3을 생성할 수 있지만 ReadReplica3에서 ReadReplica4를 생성할 수는 없습니다. -AWS MySQL 읽기 전용 복제본 작업 문서- 

 

3. 읽기 전용 복제본을 삭제할 시

각 복제본은 독립 실행형 DB인스턴스로 승격됩니다.

 

추가로 일부 DB 엔진에 따라 다르지만, MySQL, MariaDB에서는 읽기 뿐만 아니라 쓰기도 가능하다고 합니다.

 

여기에서 제가 언급한 것 외에도 AWS 도큐먼트에 많은 주요 내용들이 있습니다. 

 

 

MariaDB 읽기전용 데이터베이스 생성하기

이제부터 읽기전용 데이터 베이스를 생성해보겠습니다. 시나리오는 다음과 같습니다.

서울 리전에 원본 데이터베이스를 생성한 뒤, 싱가포르 리전에 읽기 전용 데이터베이스를 생성하겠습니다.

1. 원본 데이터베이스 생성하기

먼저 읽기전용 데이터베이스를 만들 수 있는 DB 엔진 버전을 확인해봅니다.

2020-06-10 기준으로 다음의 RDS DB 인스턴스만 리전 복제를 할 수 있습니다. 

  • MariaDB(모든 버전).

  • MySQL 버전 5.6 이상.

  • Oracle Enterprise Edition(EE) 엔진 버전 12.1.0.2.v10 이상 12.1 버전, 모든 12.2 버전, 모든 18.0 버전.

  • PostgreSQL 버전 9.4.7 이상

 

AWS 콘솔의 서울 리전에 RDS 페이지로 이동해 준다음 데이터 베이스 생성을 눌러줍니다..

 

 

실제 서비스를 하는게 아니라, 테스트용이기 때문에 간단하게 구성을 했습니다. 

1번째 그림: 표준생성 => MariaDB => 프리티어

2번째 그림: 마스터 암호 암호 확인

3번째 그림: 연결, 퍼블릭 액세스 가능성 (예) 

 

여기에 있지 않은 나머지 값들은 전부 기본값으로 설정을 하였습니다.

 

추가.

1. 퍼블릭 엑세스를 예로 해놓아야 외부에서 직접 DB 인스턴스로 접근할 수 있습니다.

2. VCP 보안 그룹은 인바운드 규칙 3306 포트로 모든 아이피에 대해 허용을 해놓았습니다.

 

 

 

5 ~ 10분정도 기다리면 데이터베이스가 생성이 됩니다. 

 

 

상태가 사용가능 상태가 되면 DB를 사용할 수 있게 됩니다.

제대로 생성이 되었는지 한번 접속을 해보겠습니다.

 

 

DB 식별자의 'database-1'을 클릭하면 위와 같은 페이지에 접속할 수 있습니다.

 

여기에서 엔드포인트를 기억해 줍시다. 우리가 생성한 DB로 접근할 수 있게 해주는 주소입니다. 또한 위에서 퍼블릭 액세스 가능성을 예로 설정하였기 때문에 터미널로 직접 접근할 수 있습니다.

 

터미널을 열어 새로 만든 MariaDB로 접속해봤습니다.

 

 

2. 읽기 복제본 데이터베이스 생성하기

이제 읽기 복제본을 생성해보겠습니다.

 

복제하고 싶은 데이터베이스를 선택하고 작업 드롭바에서 읽기 복제본 생성을 눌러줍니다.

 

 

- 인스턴스 사양은 그대로 유지하겠습니다.

- 읽기 전용 복제본 또한 퍼블릭 액세스 가능로 설정해놓고, DB 인스턴스 식별자 이름을 지어줍니다.

- 대상 리전Asia Pacific (Sginsingapore)로 지정하였습니다. 

 

읽기 전용 복제본 생성 버튼을 눌러줍니다.

 

 

 

읽기 전용 복제본이 생성이 시작되었다고 합니다. 제대로 생성되고 있나 확인해보겠습니다.

 

 

 

먼저 서울 리전 RDS입니다. 역할이 인스턴스 => 마스터로 변경된 것을 볼 수 있습니다.

 

 

조금 더 자세히 알아보기 위해 해당 DB를 살펴보았습니다.

맨 아래 복제란에 원본 DB 인스턴스와 복제된 DB 인스턴스를 한눈에 볼 수 있습니다.

 

 

 

 

싱가포르 리전의 RDS를 확인해보겠습니다. 

역할이 복제본이고 생성중인 것을 볼 수 있습니다.

 

 

 

생성이 완료되고 읽기 복제본에 접속을 해보았습니다.

성공적으로 생성된 것을 볼 수 있습니다!!

 

 

 

 

3. 읽기 복제본 테스트하기

이제 고생해서 만들어봤으니, 읽기 전용 복제본이 제대로 원본 데이터를 동기화하는지 테스트해보겠습니다.

 

왼쪽 캡쳐: 원본  / 오른쪽 캡쳐: 읽기 전용 복제본

원본 MariaDB에서 create 쿼리로 database를 만들어보았습니다.

아주 성공적으로 데이터 복제가 되는 것을 알 수 있습니다

 

기타. 읽기 복제본에서 쓰기가 정말 안될까????

이렇게 생성된 데이터베이스는 오직 읽기만 지원됩니다.

 

그래서 정말 읽기만 되는지 테스트를 해보았습니다.

 

역시 안되네요..ㅠ

 

읽어주셔서 감사합니다. :)

728x90