베하~!
안녕하세요 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를 생성해야 할 경우, 두 가지를 신경 써야 합니다.
- Replica를 생성할 리전에도 소스DB와 같은 사용자 지정 파라미터 그룹(custom parameter group) 을 만들 것
- 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
명령어를 잘 입력해 주었다면 아래와 같이 생성될 db의 값들이 describe 됩니다.
간혹 에러가 뜰 수 있지만 에러 메시지를 잘 확인한다면 금방 수정할 수 있을 거예요!
- 빈 공백이 들어간 것은 아닌지
- replica가 하나 이상 만들어져 있는데 중복해서 생성 중인 것은 아닌지
- 옵션값들을 잘못 지정해 준 것은 아닌지 확인이 필요합니다!
에러 없이 명령어가 잘 입력 되었다면, 콘솔을 통해 도쿄 리전에 Replica가 잘 생성이 되음을 확인할 수 있습니다.
4.2 소스 DB와 Replica 비교
- 서울 리전 소스 DB의 구성(configuration)
- 도쿄 리전 replica DB의 구성(configuration)
서울 리전의 DB 구성과 도쿄 리전의 db 구성이 동일한 것을 보아
성공적으로 소스 DB 의 Replica를 생성한 것을 확인할 수 있습니다. 😇
데이터베이스의 중요성이 높아지면서 자연스럽게 DR 을 구성하고 있거나 계획 중이신 분들이 많이 보입니다.
그런 분들에게 이번 게시글이 조금이나마 도움이 되었으면 좋겠네요!
그럼 다음에 또 유익한 인프라 주제를 가지고 돌아오겠습니다~!
베빠~!
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
[AWS] Amazon Route 53 호스팅 영역 유형 : Public / Private (0) | 2023.08.30 |
---|---|
AWS 보안그룹 추적하기 (0) | 2023.08.29 |
[AWS] RDS 파라미터 그룹 생성 및 수정 방법 (0) | 2023.08.23 |
[AWS] AWS Autoscaling Refresh (0) | 2023.08.21 |
[AWS] EIP 복원 (0) | 2023.08.21 |
댓글