티스토리 뷰

서비스의 고가용성(High Availability)과 성능 향상은 모든 시스템 설계자가 고민하는 주제입니다. 특히 데이터베이스는 시스템의 핵심이기 때문에 장애 발생 시 피해가 막대할 수 있습니다. 이 문제를 해결하기 위한 방법 중 하나가 데이터베이스 레플리케이션입니다.
1. 레플리케이션이란?
**레플리케이션(Replication)**은 하나의 데이터베이스에 있는 데이터를 다른 데이터베이스로 복제하여 동기화하는 기술입니다. 일반적으로 하나의 마스터(Master) 또는 프라이머리(Primary) 데이터베이스에서 슬레이브(Slave) 또는 세컨더리(Secondary) 데이터베이스로 데이터를 복제합니다.
이렇게 하면 읽기 부하 분산, 장애 복구, 데이터 백업 등의 다양한 목적을 달성할 수 있습니다.
2. 왜 레플리케이션을 사용하는가?
- ✅ 고가용성(HA): 하나의 노드에 문제가 생겨도 다른 노드에서 서비스를 계속 제공할 수 있음
- ✅ 읽기 성능 향상: 슬레이브 DB에 읽기 부하를 분산시켜 처리량 증가
- ✅ 백업 및 분석 용이: 운영 DB와 별개로 슬레이브 DB에서 분석 쿼리, 백업 작업 가능
- ✅ 재해 복구(DR): 지리적으로 떨어진 위치에 복제하여 재해 복구 시스템 구성 가능
3. 레플리케이션의 종류
① 동기식 레플리케이션(Synchronous Replication)
- 특징: 마스터가 슬레이브에 데이터를 성공적으로 반영한 후에야 트랜잭션이 완료됨
- 장점: 데이터 정합성 높음 (마스터와 슬레이브 데이터가 항상 동일)
- 단점: 슬레이브 응답 지연 시 마스터도 지연됨 → 성능 저하 가능성 있음
② 비동기식 레플리케이션(Asynchronous Replication)
- 특징: 마스터가 먼저 트랜잭션을 커밋한 후, 슬레이브가 나중에 데이터를 복제함
- 장점: 마스터 성능에 영향을 거의 주지 않음 → 고성능 처리 가능
- 단점: 일시적인 데이터 불일치 가능성 존재
③ 반동기식(Semi-Synchronous) 레플리케이션
- 특징: 최소한 한 개 슬레이브에 전송이 완료된 후 마스터에서 커밋 수행
- 장점: 동기식보다 빠르면서도 어느 정도 정합성 보장
- 단점: 네트워크 상황에 따라 지연이 발생할 수 있음
4. 구성 방식에 따른 레플리케이션 유형
유형 | 설명 | 사용 예 |
Master-Slave | 읽기는 Slave, 쓰기는 Master에서 수행 | 고전적인 구조 |
Multi-Master | 모든 노드에서 읽기/쓰기 가능 | 분산 시스템, 충돌 조정이 필요 |
Peer-to-Peer | 대등한 노드 간 레플리케이션 | Cassandra, CouchDB 등 NoSQL |
Cascading | 슬레이브가 또 다른 슬레이브를 갖는 구조 | 대규모 환경에서 사용 |
5. 레플리케이션 구현 방식
각 DBMS는 레플리케이션을 지원하는 방법이 조금씩 다릅니다.
🔸 Oracle
- Oracle Data Guard
- 주로 동기/비동기 방식의 Standby DB를 통한 고가용성 보장
- 물리적(Physical) / 논리적(Logical) Standby 구성 가능
- Oracle GoldenGate
- 이기종 DB 간 실시간 복제 가능 (Oracle ↔ MySQL, PostgreSQL 등)
- CDC(Change Data Capture) 기반
🔸 MySQL
- Binary Log 기반 복제
- 마스터가 바이너리 로그를 작성 → 슬레이브가 해당 로그를 읽어 적용
- 구성: CHANGE MASTER TO, START SLAVE 명령
🔸 PostgreSQL
- Streaming Replication
- WAL(Write-Ahead Logging) 파일을 슬레이브로 전송
- Hot standby, Logical Replication 지원
🔸 MongoDB
- Replica Set
- Primary-Secondary 구조
- 자동 Failover, 자동 선출 기능 제공
6. 레플리케이션의 과제와 고려사항
- ❗ 데이터 충돌 관리: 특히 Multi-Master 구조에서는 충돌 해결 전략 필요
- ❗ 지연 시간(Lag): 비동기 복제에서 슬레이브가 최신 상태가 아닐 수 있음
- ❗ 네트워크 품질: 지연이나 패킷 손실이 데이터 동기화에 직접적 영향
- ❗ 보안: 데이터 복제 경로 암호화 필요 (SSL, VPN 등)
[ 실제 사용 예시 ]
- 온라인 쇼핑몰: 주문은 마스터, 조회는 슬레이브에서 처리하여 부하 분산
- 금융권: 재해 복구(DR) 센터에 실시간으로 레플리케이션하여 위기 대비
- 게임 서버: 각 지역 별로 슬레이브 DB를 운영하여 지연 최소화
'DataBase' 카테고리의 다른 글
DBCP(Database Connection Pool)이란? (0) | 2025.03.31 |
---|---|
데이터베이스 샤딩(Sharding)이란? (1) | 2025.03.18 |
RDBMS와 NoSQL (0) | 2025.03.18 |
트랜잭션 격리 수준(Transaction Isolation Level) (0) | 2025.01.20 |
데이터베이스(DB) 정규화와 비정규화 (1) | 2025.01.16 |