시작하며
서비스가 성장하면서 데이터베이스에 가해지는 부하가 점점 늘어난다. 사용자가 늘어나고, 데이터가 쌓이고, 복잡한 쿼리들이 실행되면서 어느순간 단일 데이터베이스로는 한계를 느끼게 된다. 이때 자주 등장하는 해결책중 하나가 Replication이다.
이번 글에서는 Replication이 무엇이고 어떠한 상황에서 사용하는지 알아보고자 한다.
Replication이 무엇인가?
기본 개념은 하나의 데이터베이스 내용을 여러개의 데이터베이스에 복사하여 동기화 하는 기술이다.
원본 데이터베이스를 Master(혹은 Primary), 복사본을 Slave(혹은 Replica, Secondary)라고 부른다.
주요 목적
- 고 가용성 - 장애 발생시 빠른 복구
- 데이터 백업 - 실시간 백업본 유지
- 읽기 성능 향상 - 읽기 쿼리를 여러서버에 분산
Replication의 종류에는 두가지가 존재한다. Master-Master, Master-Slave
Master-Slave
Master-Slave 구조는 데이터베이스 복제(Replication) 방식 중 가장 널리 사용되는 형태이다.
하나의 Master DB에서 변경(쓰기) 작업이 발생하면, 해당 데이터가 Slave DB로 복제된다.
동작 방식
- 쓰기(Write): Master DB에서만 수행
- 읽기(Read): Slave DB에서 주로 수행
이렇게 역할을 분리함으로써, 읽기 요청을 여러 Slave DB로 분산 처리할 수 있어 읽기 성능이 크게 향상된다.
장애 대응
Master DB에 장애가 발생할 경우, Slave DB 중 하나를 Master로 승격 하여 서비스 중단 시간을 최소화할 수 있다.

Master-Master
Master-Master 구조는 두 개 이상의 데이터베이스가 서로 Master 역할을 하며, 양방향 복제 를 수행하는 방식이다.
즉, 각 노드에서 발생한 변경 사항이 다른 Master 노드에도 실시간으로 반영됩니다.
동작 방식
- 쓰기(Write): 모든 Master DB에서 가능
- 읽기(Read): 각 Master DB 또는 연결된 Slave DB에서 가능
- 변경 데이터는 양방향으로 복제되어, 어느 Master에서 쓰기를 하더라도 다른 Master에 동일하게 반영.
장점
- 특정 Master에 장애가 발생해도, 다른 Master에서 즉시 쓰기·읽기 모두 가능
- 지역별 Master 배치를 통해 지리적 분산 서비스 지원 가능
주의점
- 동시에 같은 데이터에 변경이 발생할 경우 충돌(Conflict) 이 발생할 수 있음
- 충돌 해결 전략(예: Last Write Wins, Merge Rules)이 필요
'CS > 데이터베이스' 카테고리의 다른 글
| [MYSQL] 실행계획 - 2 (0) | 2025.05.12 |
|---|---|
| [MySQL] 실행계획 -1 (0) | 2025.05.12 |
| [데이터베이스] MySQL 인덱스 - 2 (1) | 2025.05.02 |
| [데이터베이스] MySQL 인덱스 (1) | 2025.05.01 |
| [데이터베이스]트랜잭션이란? 격리수준이란? (1) | 2025.04.07 |