본문 바로가기
책/대규모 시스템 설계 기초

데이터베이스 다중화(Master-Slave)

by jeounpar 2023. 4. 2.

Master - Slave

Master 데이터베이스 : Create, Update, Delete (쓰기 연산)

Slave 데이터베이스 : Read (읽기 연산)

 

일반적으로 Slave 데이터베이스의 숫자가 Master 데이터베이스 보다 더 많음

why? -> 쓰기 연산보다는 읽기 연산이 더 많기 때문이다

 

장점

1. 더 나은 성능

Master - Slave 모델에서 모든 데이터 변경 연산은 Master 데이터베이스 서버로만 전달되고 읽기 연산은 Slave 데이터베이스 서버들로 분산된다. -> 병렬로 처리될 수 있는 쿼리의 수가 늘어나므로 성능이 좋아진다.

 

2. 안정성(reliability)

어떠한 이유(자연재해 등)로 데이터베이스 서버 일부가 파괴되어도 데이터의 보존이 보장된다. -> 데이터를 여러 리전에 다중화시켜 놓을 수 있기 때문이다.

 

3. 가용성(availability)

데이터를 여러 리전에 복제해 둠으로써, 일부 데이터베이스 서버에 장애가 발생하더라도 다른 서버에 있는 데이터를 가져와 서비스를 이어나갈 수 있다.

 

if) 하나의 데이터베이스 서버가 다운된다면?

1. Slave 서버가 다운 된 경우

- Slave 서버가 하나만 있을 때

모든 읽기 연산은 한시적으로 Master 데이터베이스가 처리 + 새로운 Slave 데이터베이스를 생성해서 장애 대응

- Slave 서버가 여러대 있을 때

읽기 연산은 나머지 Slave 서버들로 분산 + 새로운 Slave 데이터베이스를 생성해서 장애 대응

 

2. Master 서버가 다운 된 경우

- Slave 서버가 하나만 있을 때

모든 쓰기 연산은 한시적으로 Slave 데이터베이스가 처리 + 새로운 Master 데이터베이스를 생성해서 장애 대응

-> Slave 서버에 저장된 데이터가 최신 상태가 아닐 수 있기 때문에 데이터 복구 스크립트를 돌려야함 + 다중 마스터나 원형 다중화를 도입하면 이런 상황에 대처하는데 도움이 될 수 있음

- Slave 서버가 여러대 있을 때

Slave서버가 한시적으로 Master 서버의 역할을 수행 함 + 새로운 Master 데이터베이스를 생성해서 장애 대응