ecsimsw / daily-notes

val contents = myDailyNotes.filter { it.isPublic }
5 stars 0 forks source link

Mysql db replication / spring multi db source config #28

Closed ecsimsw closed 10 months ago

ecsimsw commented 10 months ago
ecsimsw commented 10 months ago

DB 데이터 백업과 부하 분산

Mysql db replication

비동기 복제

  1. 읽기 요청 과다 : slave db에 읽기 요청이 워낙 많아 처리 성능 자체가 떨어지고 sync 도 밀리는 경우이다. 이런 경우 slave db 를 scale up 하거나, slave db 자체를 증설하여 요청을 분산 할 수 있겠다.
  2. 쓰기 요청 과다 : mater db 의 쓰기량이 워낙 많아 동기화에 문제가 생기는 경우이다. 기본적으로 Msql에선 Sync를 위해 단일 스레드를 사용하는데, Mysql 5.6 부터 추가된 Multi-Threaded Replication Slaves 을 사용해서 복제를 위한 worker 스레드를 증설하는 것이 도움이 된다
  3. 너무 느린 Sync : slave db 에서 Sync 를 처리하는 시간 자체가 느린 경우를 말한다. 그 시간 동안 정합성 문제가 생긴다. Row Based Replication 으로 바꿔, Master 노드의 쓰기 쿼리 전부 대신 변경된 Row만 동기화하는 것으로 복제 방식을 변경하여 속도를 비교한다.

트랜잭션 종류에 따라 DataSource 분기

LazyConnectionDataSourceProxy

DataSource와 DB Connection의 관계

RDS의 읽기 전용 복제

RDS의 다중 AZ 배포

RDS 재난 대비