티스토리 뷰
🚀 들어가며...
- 사내에서 속도지연으로 마스터 슬레이브 개념을 도입한다고 하여 관련하여 포스팅하고자 합니다.
- 실무에서 많이 쓰이기 때문에 개념은 숙지하셔야 합니다.
📑 내용
Master & Slave 개념 이해
먼저 MySQL Replication에 대한 이해가 수반되어야 합니다.
MySQL Replication은 말 그대로 DB안 데이터를 갖다가 물리적으로 복사해 다른곳에 넣어두는 기술을 의미합니다.
그렇다면 이 기술을 가지고 어떤 효과를 얻을 수 있을까요?
우선 Main DB는 Master("1")와 그 외 Slave로 분산됩니다.
이 때, Master DB에 데이터 변경이 일어나면 Slave DB는 Master DB를 replicate하여 정보를 담아둡니다.
읽기 처리는 Slave DB를 통해 이루어집니다.
즉, 여러 Slave DB를 미리 만들어 놓아 읽기 부하를 분산시킨다는 의미입니다.
자세한 복제 메커니즘은 다음과 같습니다.
MySQL Replication Details
- 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 DB는 Insert/Delete/Update와 같이 data가 변경되는 경우만 사용되고, data Select처리는 Slave DB를 사용합니다.
🙋🏻♂️ 후기
사내에서는 DevOps팀에서 이런 Master & Slave 작업들을 하기 때문에 제가 직접 작업할 기회가 없지만, 기회가 된다면 실무에서도 제가 직접 적용해보고, 경험을 쌓고 싶은 마음입니다.
DB를 실무 관점에서 이중화를 직접 해보고 싶으신 분이 있다면, 하단 참고에 참고할 만한 블로그를 알려드립니다. 이 블로그 참고하셔서 직접 replication을 해보시면 도움이 되실 것 입니다!
🔗 참고
'Postgresql' 카테고리의 다른 글
[Postgresql] 인덱스와 시퀀스의 차이 (0) | 2022.08.11 |
---|---|
[Postgresql] Psycopg2란? 트랜잭션 ID 추출방법은? (0) | 2022.08.09 |
[postgresql] Window Function(윈도우함수)에 대해 알아보자! (0) | 2022.07.05 |
[Postgresql] 정수 범위를 벗어남 오류 분석 및 해결 과정 (1) | 2022.06.13 |
[Postgresql] WITH문 사용하기, WITH가 성능에 미치는 영향 (0) | 2022.05.13 |
- Total
- Today
- Yesterday
- JavaScript
- Algorithm
- PostgreSQL
- django ORM
- data formatting
- Master & Slave
- Linux
- list
- docker
- lv2
- container
- static files
- 탐욕법
- Default export
- react
- ORM
- Greedy Algorithm
- SQL
- uSWGI
- JS
- generator expression
- db
- Named export
- lv1
- Python
- union-find
- This
- programmers
- django
- MVT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |