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 데이터베이스를 생성해서 장애 대응
'책 > 대규모 시스템 설계 기초' 카테고리의 다른 글
안정 해시 (Consistent Hash) - 해시 키 재배치(rehash) 문제 (0) | 2023.06.08 |
---|---|
Index (0) | 2023.03.23 |