DB (Master & Slave 개념 및 구조)
개요
소프트웨어를 개발하는데 가장중요한것은 DB를 설계하는 것이라고 생각합니다.
많은 소스를 보면서 DB구조가 Master & Slave로 되어있는것 을 볼 수 있었는데, 자세한 개념을 알아 보도록 하겠습니다.
Master & Slave 개념
MySQL Replication(복제)은 말 그대로 DB인 데이터를 갖다가 물리적으로 복사해 다른곳에 넣어두는 기술을 의미합니다.
복제 매커니즘
- Master DB에서 DATA변경이 일어나면(1), 이를 Master DB에 반영합니다(2).
- 변경이력을 Binary Log로 저장합니다(3).
- 관련 이벤트를 Slave DB들에게 넘깁니다(4).
- Slave IO Thread에서 이벤트를 캐치하면(5) Binary Log를 Slave DB 각각의 Relay Log에 저장합니다(6).
- Slave SQL Thread에서 Relay Log를 읽어(7) Slave DB를 업데이트합니다(8).
- 읽기 처리를 할 때는 Slave DB를 사용합니다.
Master & Slave 구조
일반적으로 DB에 대한 트래픽 분산을 위해서 Mysql Replication을 통해서 트래픽 집중 문제를 해결할 수 있습니다.
Master에게는 데이터 동시성이 아주 높게 요구되는 트랜잭션을 담당하고, Slave에게는 읽기만 데이터 동시성이 꼭 보장될 필요는 없는 경우에 읽기 전용으로 데이터를 가져오게 됩니다.
일반적으로 Front에서 데이터를 읽어들일 때, 꼭 데이터 일관성이 필요한 경우와 아닌 경우에 대한 API가 나누어지게 됩니다.
그런 경우에 읽기전용으로 트랜잭션을 사용하여 디비에 대한 트래픽을 분살할 수 있습니다.