2010년 7월 1일 목요일

Replication

데이터베이스시스템의 부하를 분산시키고 싶은 경우는 replication을 이용한다.
MySQL의 replication의 특징은 다음과 같다.

  • 한 방향(Master에서 Slave로 흘러감)
  • 비동기
  • Master:Slave = 1:N
  • Slave겸 Master가 될 수 있다.
  • 통신은 TCP/IP를 사용
  • 바이너리 로그를 사용
  • 갱신은 Master만 가능

MySQL의 Replication은 Master의 바이너리 로그의 내용을 Slave에 보내는 것으로 수행된다.
동작의 흐름은 다음과 같다.

  1. Slave I/O스레드가 Master에 접속
  2. Master가 Slave를 인증하고 Slave와의 세션 개시
  3. Slave I/O스레드가 바이너리 로그파일(파일명, 위치)를 요구
  4. Master(binlog dump스레드)가 요구되어진 지점으로부터 이벤트를 바이너리 로그에서 읽어들여 Slave 에 전송
  5. Slave I/O스레드는 받어낸 이벤트를 relay-log에 기록
  6. Slave SQL스레드가 relay-log내용을 읽어들여 SQL문을 실행
  7. Master에 새로운 이벤트가 있으면 Master가 Slave에 송신