### master - slave 데이터베이스 구성 - master - MMM(Multi - Master Replication Manager) 구조로 구성함 - vip, dns 선택할수 있으며 vip 를 사용하고 있음 - 만약 데이터센터 다중화로 구성해야 한다면 vip -> dns 로 변경해야 함 - slave - 여러개의 slave 디비로 구성하고, slave 디비 앞에 l4 를 두어 트래픽을 분산시킴 <img width="608" alt="스크린샷 2024-05-08 오전 8 52 27" src="https://github.com/warnus/devocean-system-study-2024/assets/5309858/d1a753a3-7a22-4f28-8d6b-8f80c27335f1"> ### ### master - slave 단점 - 대량의 데이터를 추가, 업데이트, 삭제할때 복제 지연 이슈가 발생할수 있음 - master - slave 동기화에 binlog 를 사용하게 되는데 이 로그처리가 밀리면서 복제 지연이 발생함 - 수백만개의 테이블에 아무 생각없이 delete all 해버리면 바로 복제지연이 생김 - 복제 지연이 골치아픈 이유가 데이터 싱크 맞을때까지 아무것도 할수 있는게 없으며(동기화 될때까지 손놓고 있을수밖에 없음) 몇시간 동안 지속되기도 함 - 코드 구현 난이도가 높아짐 - 책의 내용처럼 쓰기는 master, 읽기는 slave 로 마냥 단순하지 않음 - 데이터를 읽고 쓰기해야할 경우, master 에서 읽고 master 에 쓰기를 해야함 - slave 에서 읽고 master 에 쓰면 데이터베이스 복제 지연 때문에 데이터 저장이 의도와 다르게 저장됨 - spring 에서는 LazyConnectionDataSourceProxy, AbstractRoutingDataSource 를 사용해서 transactional 어노테이션에 read only 인지 아닌지에 따라 master 로 접근할수 있도록 구성할수 있음 - 다른 언어 프레임워크에서는 처리가 가능한지 또한 어떻게 처리하는지 궁금함 참고 - https://www.youtube.com/watch?v=dCVKAJ7tb70
master - slave 데이터베이스 구성
master - slave 단점
참고