본문 바로가기
CSP (Cloud Service Provider)/AWS

[AWS] 타 리전에 RDS Read Replica 생성

by BTC_남요정 2023. 8. 28.

베하~!

안녕하세요 BTC_블랙아웃입니다.

 

 

지난 시간에는 사용자 지정 파라미터 그룹을 생성하고,

데이터베이스 생성 시 해당 파라미터 그룹을 지정해줄 수 있다는 것을 알아보았는데요.

 

오늘은 이렇게 사용자 지정(custom) 파라미터 그룹을 지정하여 만든 데이터베이스를

다른 리전에 복제본으로 생성하는 방법에 대해 알아보겠습니다.

 

 

그냥 복제본 생성하면 되는거 아닌가? 라고 생각하실 수 있지만, 같은 리전이 아니라 리전이 다른 곳에 replica 를 만들게 될 경우 문제가 발생하게 됩니다..!

 

또한 지난 게시글에서 lower_case_table_names 파라미터의 경우,

db 인스턴스를 생성 하고 난 뒤에는 파라미터 값을 수정할 수 없다 말씀을 드렸는데요.

 

그래서 오늘은 lower_case_table_names 파라미터를 수정하는 방법

custom 파라미터 그룹을 적용한 데이터베이스의 복제본을 다른 리전에 생성하는 방법에 대해

함께 알아보도록 하겠습니다.

 

 


 

1. 파라미터 그룹 생성 및 수정

1.1 파라미터 그룹 생성

지난 게시글을 참고해주세요!

 

1.2 파라미터 값 수정

: RDS Console > Parameter groups > Edit > lower_case_table_names=1 수정 > Save Change

 

📌 이미 데이터베이스를 생성하고 난 후에 lower_case_table_names 파라미터를 수정하려고 하면

아래와 같이 “이미 db 인스턴스에서 사용중이다.” 라는 에러가 발생합니다.

그러니, 꼭 DB 생성 전에 파라미터 값을 수정해주세요!

 


 

2. 데이터베이스 생성

  • Engine Type & Version : MySQL 8.0.33
  • Templates : Dev/Test
  • **Availability and durability (**Deployment options) : Single DB instance
  • Settings
    • DB instance identifier : test-db
    • Master username : master
  • Instance configuration
    • DB instance class: Burstable classes (db.t3.micro)
  • Storage
    • Storage type: SSD(gp2)
    • Allocated storage: 20Gib
    • Storage autoscaling
      • Enable storage autoscaling: Yes
      • Maximum storage threshold: 1000Gib
  • Database authentication
    • Database authentication options: Password authentication
  • Additional configuration
    • initial database name: testdb
    • DB parameter group: test-pg-8
    • Backup: Enable automated backups
    • Encryption
      • Enable encryption
      • AWS KMS key: (default) aws/rds

📌 Replica를 생성해야 하므로 자동 백업을 활성화 해주세요!

 


 

3. 같은 리전에 read replica(복제본) 생성

3.1 read replica 생성

: RDS Console > Databases > Actions > Create Read replica

 

 

3.2 read replica 생성 옵션

  • DB instance identifier
  • Instance configuration
  • AWS Region (Destination Region): Seoul
  • Storage
  • Availability

옵션 값들을 선택한 후 create replica 를 눌러주시면 됩니다.

 

 

3.3 read replica 생성 완료

그럼 위와 같이 단일 인스턴스였던 데이터베이스가 Primary로 수정되고,

Replica 가 추가된 것을 확인할 수 있습니다!

 

 


 

4. 다른 리전에 Read replica(복제본) 생성

4.1 Read replica 생성 - 콘솔

그럼 같은 방법으로 서울 리전이 아닌 도쿄 리전에 Read replica 를 생성해 보겠습니다.

 

📌 복제본을 생성할 다른 리전에도 VPC 나 서브넷그룹 등 같은 환경이 구성되어 있어야 합니다.

 

그리고 위와 같은 방법에서 리전만 도쿄로 바꾸어 Replica를 생성해 줍니다.

: RDS Console > databases > Actions > Create Read replica

  • AWS Resion (Destination Region): Tokyo

 

마찬가지로 create replica를 눌러주면 도쿄 리전에서 read replica 가 잘 만들어지고 있는 것을 확인할 수 있겠죠?

 

하지만!!

에러가 발생합니다.

 

왜냐하면, Replica를 생성할 때 파라미터 그룹을 선택하는 옵션이 없기 때문입니다!

 

콘솔을 활용하여 다른 리전으로 replica를 생성하는 경우 파라미터 그룹을 선택할 수 없기 때문에

자동으로 default 파라미터 그룹이 붙게 되는데요.

 

그럼 소스DB의 파라미터 그룹과 달라지게 때문에 소스DB와 Replica 가 서로 호환이 되지 않아 에러가 발생하게 됩니다.

그래서 다른 리전에서 Replica를 생성해야 할 경우, 두 가지를 신경 써야 합니다.

 

  1. Replica를 생성할 리전에도 소스DB와 같은 사용자 지정 파라미터 그룹(custom parameter group) 을 만들 것
  2. Replica 생성을 콘솔이 아니라 CLI로 만들 것

 

4.2 Read replica 생성 - AWS CLI

파라미터 그룹은 리전 상관없이 똑같이 콘솔 작업으로 가능하므로, 해당 리전에 파라미터 그룹을 만들고, lower_case_table_names 파라미터 값을 수정해줍니다.

 

AWS CLI를 사용해서 도쿄 리전에 복제본을 생성해 줍니다.

저는 간단하게 클라우드 쉘을 사용했습니다. 

 

 

Replica 를 만들 때 사용했던 명령어입니다. 

필요한 옵션 값들은 아래 링크를 통해 찾아 넣어주시면 됩니다. 

기본적으로 많이 사용하는 부분들은 아래 명령어로도 충분히 생성 가능하니, 여러모로 테스트 해보는 것을 권고드립니다.

aws rds create-db-instance-read-replica 
--db-instance-identifier < replica db 이름> \
--source-db-instance-identifier <소스db ARN> \
--source-region <소스db 리전> \
--region <replica <replica 리전> \
--db-parameter-group-name <replica 파라미터그룹 이름> \
--option-group-name <replica 옵션그룹 이름> \
--vpc-security-group-ids <replica  vpc 보안그룹> \
--db-subnet-group-name <replica 서브넷그룹> \
--availability-zone <replica 생성할 가용영역> \
--max-allocated-storage 1000 \  # 스토리지 자동 확장(Storage autoscaling)
--kms-key-id alias/aws/rds \    # storage 암호 (aws kms key)
--no-multi-az \   # multi az 비활성화

https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.html

 

create-db-instance-read-replica — AWS CLI 1.29.35 Command Reference

Note: You are viewing the documentation for an older major version of the AWS CLI (version 1). AWS CLI version 2, the latest major version of AWS CLI, is now stable and recommended for general use. To view this page for the AWS CLI version 2, click here. F

docs.aws.amazon.com

 


 

명령어를 잘 입력해 주었다면 아래와 같이 생성될 db의 값들이 describe 됩니다.

간혹 에러가 뜰 수 있지만 에러 메시지를 잘 확인한다면 금방 수정할 수 있을 거예요!

  • 빈 공백이 들어간 것은 아닌지 
  • replica가 하나 이상 만들어져 있는데 중복해서 생성 중인 것은 아닌지
  • 옵션값들을 잘못 지정해 준 것은 아닌지 확인이 필요합니다!

 

에러 없이 명령어가 잘 입력 되었다면, 콘솔을 통해 도쿄 리전에 Replica가 잘 생성이 되음을 확인할 수 있습니다.

 

 

 

4.2 소스 DB와 Replica 비교

  • 서울 리전 소스 DB의 구성(configuration)

 

  • 도쿄 리전 replica DB의 구성(configuration)

서울 리전의 DB 구성과 도쿄 리전의 db 구성이 동일한 것을 보아

성공적으로 소스 DB 의 Replica를 생성한 것을 확인할 수 있습니다. 😇

 

 


 

데이터베이스의 중요성이 높아지면서 자연스럽게 DR 을 구성하고 있거나 계획 중이신 분들이 많이 보입니다.

그런 분들에게 이번 게시글이 조금이나마 도움이 되었으면 좋겠네요!

 

그럼 다음에 또 유익한 인프라 주제를 가지고 돌아오겠습니다~!

 

베빠~!

댓글