<aside> 💡 MySQL 엔진은 InnoDB를 기준으로 작성했습니다.
</aside>
**MySQL Replication(다중화)**은 데이터베이스를 다수의 서버로 분산시켜 부하를 분산시키는 방법이다. 이중화를 구성하면 데이터를 쓰기 위한 메인 서버(마스터)와 읽기 위한 서버(슬레이브)로 나누어 부하를 분산할 수 있다.
이 글에서는 도커로 MySQL을 Replication하는 과정을 기록합니다.
내가 만든 MyShop 온라인 편집샵의 서버와 DB의 일부분이다. 다음과 같이 구성한 이중화 방식을 Master/Slave 방식이라고 하고 Master 한 대에 Slave 서버를 여러 대 두면 1:N 방식이라고 한다.
일반적으로 Master 서버는 INSERT, UPDATE, DELETE의 변경 작업을 담당하고, Slave 서버는 SELECT 작업을 담당한다.

Master/Slave 방식
대부분의 웹 서비스 혹은 데이터베이스에 요청을 하는 모든 서비스는 사용자의 데이터를 처리하고 서비스를 원활하게 제공하기 위해 DB에 수많은 요청을 한다.
데이터베이스 서버가 하나만 있는 경우 웹 서버에서 발생하는 모든 트래픽을 처리하는 데는 한계가 있다. 웹 서비스에서는 읽기 작업 비율이 쓰기 작업 비율보다 높기 때문에 한 서버에서 모든 작업을 처리하면 쓰기 작업에서 병목 현상이 발생하여 응답 시간이 느려지고 사용자 서비스 환경이 저하되기 마련이다.
또한, 사용하고 있는 DB 서버가 아무리 고사양의 서버라도 장애가 발생하면 운영 중인 서비스는 정상적인 서비스를 제공하기 어려워진다.
따라서 Replication을 구성하면 가용성이 높아지며 다음과 같은 장점을 얻을 수 있다.
보통 검색 속도를 향상하기 위해 MySQL에서는 인덱스로 B-Tree 인덱스를 사용한다.