본문 바로가기

Database2

MySQL Replication 구성하기 - 1 with Docker 과거에 진행했던 코인 모의투자 프로젝트에서 겪었던 문제와 Replication을 구성한 내용을 작성해보려고 한다. 1. 배경 맡았던 도메인은 사용자의 매수, 매도 주문이었고 기능 중 하나는 주문이 체결될 때마다 거래 내역을 생성해서 데이터베이스에 저장하는 것이었다. 코인의 거래량 자체가 적거나 실시간으로 거래량이 치솟아도 사용자가 걸어둔 미체결 주문량이 적으면 문제가 없었지만, 반대의 경우 거래 내역을 조회할 때 레이턴시가 길어지는 문제가 발생했다. 단주매매처럼 트래픽이 급격하게 증가하면 3초가 넘기도 했다. insert 트랜잭션이 커넥션을 많이 점유해서 병목이 생긴 것은 아닐까 싶었지만 커넥션풀 사이즈를 조정해도 큰 변화는 없었다. 그래서 read, write 쿼리에 따라 부하를 분산할 수 있는 rep.. 2024. 2. 1.
MySQL Replication 구조 Replication 두 개 이상의 데이터베이스를 Master, Slave 구조로 활용하여 Master 노드의 데이터를 Slave 노드로 복제, 동기화하는 기술이다. Write 쿼리(INSERT, UPATE, DELETE)는 Master 노드에서 처리하고, Read 쿼리(SELECT)는 Slave 노드에서 처리한다. MySQL 8.0부터는 Master/Slave를 Source, Replica로 명명하고 있다. 사용 목적 부하 분산: Read/Write 쿼리에 따라 Master, Slave의 부하를 분산하고, 쿼리의 약 80%가 읽기 작업이기 때문에 Slave를 Scale-Out하여 읽기 성능을 높일 수 있다. 데이터 백업: Slave로 데이터가 복제되기 때문에 Master에 문제가 발생했을 때 피해를 최.. 2024. 1. 31.