토픽 159 / 201·NewSQL 및 특수 목적 DB
Read Replica (읽기 복제본)
Read Replica (읽기 복제본)
주 데이터베이스(Primary/Master)의 데이터를 비동기 또는 동기로 복제하여 읽기 전용 쿼리를 처리하는 보조 데이터베이스로, 읽기 부하를 분산하고 주 데이터베이스의 쓰기 성능을 보호하며 고가용성과 지역 분산에 활용
목적: 읽기 부하 분산, 쓰기 성능 보호, 고가용성(Failover), 지역 분산, 리포팅 분리
특징: 읽기 전용, 비동기/동기 복제, 복제 지연(Replication Lag), 다중 복제본 지원
구성요소
- •Primary(Master): 쓰기/읽기 처리, 트랜잭션 로그 생성
- •Replica(Slave): 읽기 전용, 로그 수신·적용
- •Replication Stream: 트랜잭션 로그 전송, WAL(PostgreSQL), Binlog(MySQL)
- •Proxy/Router: 읽기/쓰기 라우팅, ProxySQL, PgBouncer
복제 방식
- •비동기 복제: Primary 커밋 후 Replica 적용, 지연 발생, 성능 우선
- •동기 복제: Replica 적용 확인 후 커밋, 지연 없음, 성능 저하
- •반동기(Semi-Sync): 최소 1개 Replica 수신 확인, 절충안
Replication Lag (복제 지연)
- •Primary와 Replica 간 데이터 차이 시간
- •비동기 복제 시 수 밀리초~수 초
- •읽기 후 쓰기 일관성 문제 발생 가능
Read/Write Splitting
- •쓰기(INSERT/UPDATE/DELETE) → Primary
- •읽기(SELECT) → Replica
- •애플리케이션 또는 프록시에서 라우팅
장점: 읽기 확장성, Primary 부하 감소, 고가용성(Failover 대상), 지역 분산(낮은 지연)
단점: 복제 지연(Eventual Consistency), 쓰기는 확장 안 됨, 관리 복잡도
적용사례: 읽기 중심 워크로드, 리포팅/분석 분리, 글로벌 서비스, 백업, DR(재해 복구)
기술요소: WAL, Binlog, Replication Lag, Read/Write Splitting, Failover
비교: Read Replica(읽기 확장) vs Sharding(쓰기 확장) vs Clustering(HA)
연관: 데이터베이스 복제, HA, Failover, WAL, Binlog, ProxySQL