[DB] DB 다중화 아키텍처

cowmin·2025년 6월 11일

DR(Disaster Recovery)

장애나 재해 발생 시 IT 시스템, 데이터, 서비스를 빠르게 복구해 정상 상태로 돌려놓는 전략과 기술

종류설명주 센터원격 센터
Cold Site최소한의 준비만 해주는 것
Warm Site본 시스템과 동일한 수준의 데이터만 준비Active
Hot Site본 시스템과 동일한 수준의 데이터와 시스템을 원격지에 구축.
장애 발생 시 서비스 연속성을 위한 비상 대피소
ActiveStand-by
Mirror Site본 시스템과 동일한 수준의 데이터와 시스템을 원격지에 구축.
트래픽 분산을 위한 복제된 창구
ActiveActive

DB 다중화 아키텍처

항목레플리케이션 (Replication)클러스터링 (Clustering)
정의하나의 DB 데이터를 다른 DB로 복제하여 여러 서버가 동일한 데이터를 가짐여러 서버를 하나의 서비스처럼 묶음, 공동으로 트래픽 처리
목적장애 시 빠른 복구, 백업, 읽기 부하 분산고가용성(HA), 부하 분산, 무중단 서비스
노드 역할주로 Master-Slave 구조모든 노드가 Active하거나 일부만 Active
확장성Read Scale-out에 적합 (쓰기 확장은 어려움)Read/Write 둘 다 확장 가능 (수평 확장)
구성 복잡도상대적으로 단순함비교적 복잡함 (HA 설정, 공유 스토리지, 클러스터 매니저 등 필요)

레플리케이션 (Replication)

여러 개의 DB를 권한에 따라 수직적인 구조(Master-Slave)로 구축하는 방식
읽기 작업 > 쓰기 작업: insert
비동기적 처리 방식(병렬 방식)

Master-Slave

  1. db1(master), db2(slave)
    참고: 위 구성도와 다르게 db1(master), db2(slave) 구조로 테스트함

  2. db1 종료

  3. db2으로 넘어간 것 확인

keepalived


클러스터링 (Clustering)

여러 개의 DB를 수평적인 구조로 구축하는 방식
읽기 작업 < 쓰기 작업: insert, update, delete

클러스터에서 사용되는 용어

  • IST : Incremental State Transfer, 노드가 클러스터에서 잠시 이탈했다가 복귀할 때, 변경된 데이터만 복사받는 방식

  • SST : State Snapshot Transfer, 클러스터에 새로운 노드가 들어올 때 전체 데이터를 "스냅샷"처럼 복사해서 보내주는 과정

  • 쿼럼 : 몇 개의 노드가 살아있어야 클러스터가 안전하다고 볼 것인가?를 결정하는 기준
    ex) 3개 중 2개 살아있음(클러스터 유지 가능), 3개 중 1개만 살아있음(non-Primary 상태 -> 서비스 중단)
    DB 3개중 1개만 살아있을 경우, 죽은 두개의 서버중 하나만 살리는 것은 불가
    살아있는 서버에서 복구에 필요한 설정을 추가해야함

  1. db1, db2, db3

  2. db1 서비스 중지

	show status like 'wsrep_cluster_status'; // Primary
	
	show status like 'wsrep_cluster_size'; // 2

	show status like 'wsrep_local_state_comment'; // Synced
  1. 데이터베이스(test) 생성 후 연동 확인

  2. db1 기동 후 데이터베이스 연동 확인

mysqldump

  • 데이터베이스 지정하여 덤프
mysqldump -u root -p mydb > mydb.sql
  • 모든 데이터 베이스 덤프
  • -all-databases 옵션에 mysql 데이터베이스도 포함되어 계정까지 다 덤프됨
mysqldump -u root -p --all-databases > all.sql

0개의 댓글