티스토리 뷰

레플리케이션

  • 하나의 MySQL/MariaDB 서버가 존재한다고 생각해보자. 만약 이 서버의 동기화된 복제본이 n개 추가되고 애플리케이션으로 부터의 모든 읽기(Read) 요청을 이 복제본이 대신 받는다고 생각해보자. 읽기에 대한 부담이 여러 대의 복제본으로 분산되면서 원본 서버의 쓰기 성능까지 덩달아 안정적으로 작동하게 될 것이다. 또한, 예기치 못한 장애로 원본 서버가 유실되어도 복제본에 의해 데이터는 보존된다. 이러한 데이터베이스 구성 방법을 마스터-슬레이브 레플리케이션(Master-Slave Replication)이라고 부른다.

MHA

  • 앞서 언급한 Single Master, Multi Slave 구성을 통해 부하 분산 효과와 데이터의 유실 방지는 가능해졌지만 애플리케이션 입장에서는 마스터 서버에 장애가 발생할 경우 수동으로 작업을 복구하기 까지 서비스 중단이 불가피하다. 이런 상황에 대비하여 최소의 다운타임(10~30초)으로 자동 Failover 기능을 제공하는 것이 MHA(MySQL Master High Availability)이다.
  • MHA는 데이터베이스 엔지니어인 Yoshinori Matsunobu(현재 페이스북 근무)가 2011년 개발하여 공개한 오픈 소스 툴의 집합이다.
  • MHA의 장점은 기존 구조의 변형(운영 환경 상의 설정 변경 등) 없이 각 노드에 MHA 제공 툴만 설치하면 최소한의 비용으로 자동 Failover가 가능해진다는 것에 있다. 각 Master, Slave 노드에는 MHA Node라는 툴을 설치하면 된다. 추가적으로 별도의 서버에 이들 노드를 모니터링하는 MHA Manger를 설치해야 하는데 Slave 노드 중 하나에 설치해도 무방하다.
  • 마스터 노드가 다운되면 가장 최신의 복제 내용을 가진 슬레이브 노드가 자동으로 선택되어 마스터 노드로 승격되고 나머지 슬레이브 노드는 새로 승격된 마스터 노드를 바라보게 된다. 여기까지 걸리는 시간은 10~30초이며 실제로는 훨씬 빠르게 적용된다.

참고 글

댓글
댓글쓰기 폼