장애나 재해 발생 시 IT 시스템, 데이터, 서비스를 빠르게 복구해 정상 상태로 돌려놓는 전략과 기술
| 종류 | 설명 | 주 센터 | 원격 센터 |
|---|---|---|---|
| Cold Site | 최소한의 준비만 해주는 것 | ||
| Warm Site | 본 시스템과 동일한 수준의 데이터만 준비 | Active | |
| Hot Site | 본 시스템과 동일한 수준의 데이터와 시스템을 원격지에 구축. 장애 발생 시 서비스 연속성을 위한 비상 대피소 | Active | Stand-by |
| Mirror Site | 본 시스템과 동일한 수준의 데이터와 시스템을 원격지에 구축. 트래픽 분산을 위한 복제된 창구 | Active | Active |
| 항목 | 레플리케이션 (Replication) | 클러스터링 (Clustering) |
|---|---|---|
| 정의 | 하나의 DB 데이터를 다른 DB로 복제하여 여러 서버가 동일한 데이터를 가짐 | 여러 서버를 하나의 서비스처럼 묶음, 공동으로 트래픽 처리 |
| 목적 | 장애 시 빠른 복구, 백업, 읽기 부하 분산 | 고가용성(HA), 부하 분산, 무중단 서비스 |
| 노드 역할 | 주로 Master-Slave 구조 | 모든 노드가 Active하거나 일부만 Active |
| 확장성 | Read Scale-out에 적합 (쓰기 확장은 어려움) | Read/Write 둘 다 확장 가능 (수평 확장) |
| 구성 복잡도 | 상대적으로 단순함 | 비교적 복잡함 (HA 설정, 공유 스토리지, 클러스터 매니저 등 필요) |
여러 개의 DB를 권한에 따라 수직적인 구조(Master-Slave)로 구축하는 방식
읽기 작업 > 쓰기 작업: insert
비동기적 처리 방식(병렬 방식)

db1(master), db2(slave)
참고: 위 구성도와 다르게 db1(master), db2(slave) 구조로 테스트함
db1 종료
db2으로 넘어간 것 확인

여러 개의 DB를 수평적인 구조로 구축하는 방식
읽기 작업 < 쓰기 작업: insert, update, delete
클러스터에서 사용되는 용어
IST : Incremental State Transfer, 노드가 클러스터에서 잠시 이탈했다가 복귀할 때, 변경된 데이터만 복사받는 방식
SST : State Snapshot Transfer, 클러스터에 새로운 노드가 들어올 때 전체 데이터를 "스냅샷"처럼 복사해서 보내주는 과정
쿼럼 : 몇 개의 노드가 살아있어야 클러스터가 안전하다고 볼 것인가?를 결정하는 기준
ex) 3개 중 2개 살아있음(클러스터 유지 가능), 3개 중 1개만 살아있음(non-Primary 상태 -> 서비스 중단)
DB 3개중 1개만 살아있을 경우, 죽은 두개의 서버중 하나만 살리는 것은 불가
살아있는 서버에서 복구에 필요한 설정을 추가해야함

db1, db2, db3
db1 서비스 중지
show status like 'wsrep_cluster_status'; // Primary
show status like 'wsrep_cluster_size'; // 2
show status like 'wsrep_local_state_comment'; // Synced
데이터베이스(test) 생성 후 연동 확인
db1 기동 후 데이터베이스 연동 확인
mysqldump -u root -p mydb > mydb.sql
-all-databases 옵션에 mysql 데이터베이스도 포함되어 계정까지 다 덤프됨mysqldump -u root -p --all-databases > all.sql