일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 일대다
- JPQL
- exclusive lock
- BOJ
- 지연로딩
- 유니크제약조건
- 스토어드 프로시저
- FetchType
- 동적sql
- CHECK OPTION
- querydsl
- PS
- eager
- 이진탐색
- 다대다
- shared lock
- execute
- 연결리스트
- 낙관적락
- 스프링 폼
- 연관관계
- 백트래킹
- SQL프로그래밍
- 다대일
- fetch
- dfs
- 비관적락
- 데코레이터
- 힙
- 즉시로딩
- Today
- Total
흰 스타렉스에서 내가 내리지
RDS에서 Read Replica 사용 시 데이터 유실 문제와 해결 방법 본문
문제 상황
AWS RDS를 사용하여 고가용성과 성능을 확보하기 위해 마스터/리드 리플리카 구조를 구현했다. 이 구성에서는 쓰기 연산은 마스터 노드에서만 수행되고, 읽기 연산은 여러 리드 리플리카에서 분산 처리된다.
그러나 마스터 노드가 장애를 겪으면 리드 리플리카 중 하나가 자동으로 마스터 노드로 승격되어 쓰기 연산을 이어받는 상황이 발생한다.
문제는 리드 리플리카가 마스터 노드와 동기화되는 과정에서 발생하는 시간 차이로 인해 데이터 유실 가능성이 존재한다는 점이다. 마스터 노드에서 복제본으로 모든 변경 사항이 전송되기 전에 장애가 발생하면 데이터가 리드 리플리카에 복제되지 못해 유실될 수 있다.
해결 방안
데이터 유실 가능성을 최소화하고 고가용성을 보장하기 위해 다음과 같은 방안을 고려할 수 있다.
- Multi-AZ 배포 사용
- AWS RDS는 고가용성을 위해 Multi-AZ 배포를 제공한다. Multi-AZ 배포는 동기식 복제를 통해 두 개의 데이터베이스 인스턴스를 서로 다른 가용 영역(AZ)에 유지한다. 데이터가 마스터 노드에 기록될 때, 동기식으로 스탠바이 노드에도 기록되므로 장애 발생 시 데이터 유실 가능성이 매우 낮다. 자동 장애 조치를 통해 마스터 노드에 장애가 발생하면 스탠바이 노드가 자동으로 마스터 노드로 전환된다.
- 주기적인 백업
- 주기적인 데이터베이스 백업을 통해 데이터를 안전하게 보관한다. AWS RDS는 자동 백업 기능을 제공하여 설정된 주기 동안 데이터를 백업한다. 백업 데이터를 사용하여 장애 발생 시 복구할 수 있다.
- 어플리케이션 레벨에서의 처리
- 어플리케이션에서 데이터 일관성을 보장하기 위한 추가적인 로직을 구현한다. 트랜잭션 로그를 사용하여 데이터 변경 사항을 추적하고, 장애 발생 시 이를 복구하는 메커니즘을 구현할 수 있다. 예를 들어, 데이터 변경 사항을 별도의 로깅 시스템에 기록하고, 장애 발생 시 이를 통해 복구할 수 있다.
Multi-AZ 배포 설정 예시
Multi-AZ 배포를 통해 RDS 인스턴스를 생성하는 방법은 AWS 콘솔을 통해 쉽게 설정할 수 있다.
- RDS 콘솔에 로그인:
- AWS Management Console에 로그인하고, RDS 서비스로 이동한다.
- 인스턴스 생성:
- "Create database"를 선택하고, 데이터베이스 엔진 및 버전을 선택한다.
- "Multi-AZ deployment" 옵션을 선택한다.
- 설정 완료:
- 나머지 설정을 완료하고 인스턴스를 생성한다.
결론
AWS RDS에서 읽기 전용 복제본을 사용하는 경우 데이터 유실 가능성을 최소화하기 위해 Multi-AZ 배포를 사용하는 것이 가장 효과적이다. Multi-AZ 배포는 동기식 복제를 통해 데이터 유실 가능성을 거의 없애며, 자동 장애 조치를 통해 고가용성을 제공한다.
또한, 주기적인 백업 및 어플리케이션 레벨의 데이터 일관성 보장 로직을 통해 데이터 유실을 추가적으로 방지할 수 있다.
이러한 방법들을 통해 AWS RDS 환경에서 데이터 유실을 방지하고 고가용성을 확보할 수 있다.
Standby Node :: 스탠바이 노드
스탠바이 노드(Standby Node)는 고가용성을 위해 준비된 대기 상태의 데이터베이스 인스턴스를 의미한다. 주로 마스터 노드가 장애를 겪었을 때 즉시 대체하여 서비스의 연속성을 보장하기 위해 사용된다.
'AWS' 카테고리의 다른 글
AWS CLI에서 계정 전환 및 기본 프로필 설정 방법 (0) | 2024.09.13 |
---|---|
Amazon OpenSearch 그리고 logstash 그리고 Spring boot (0) | 2024.07.10 |
Amazon EventBridge 에서 Cron 규칙으로 Lambda 호출하기 (0) | 2024.06.29 |
Spring boot 에 ElastiCache for Redis 사용하기 (0) | 2024.05.06 |
Lambda 에서 외부 라이브러리 import 하기 (계층 추가) (1) | 2024.03.29 |