[MySQL] [MHA] 01. MHA 이론

■ MHA 소개

MHA MySQL High Available 약자로 MySQL HA솔루션중에 하나입니다. 구글에서 오픈소스로제공되었으나 현제는 중단되고 다른 개발자가 업데이트를 해오다 2018년도부터 중단되었습니다. 하지만 지금도 MySQL에서 가장 많이 쓰이는 HA솔루션중에 하나입니다.

보통 DB HA솔루션은 Shared Disk 이용하고 액티브 서버에 문제 발생시 HA솔루션이 문제를 감지하고 Shared Disk 스탠바이 서버에 붙인  스탠바이 서버를 액티브로 기동하여 서비스를 정상화 시킵니다. 하지만 MHA 특이하게 마스터 - 슬레이브 복제 구조에서 슬레이브중 하나를 마스터로 승격시키고 나머지 슬레이브들을 신규로 승격된 마스터에 모두 옮김으로서 HA 완성시킵니다.

물론 Peace Maker 다른 HA솔루션을 이용해서   있습니다. 하지만 마스터 - 슬레이브 복제환경을 그대로 이용하면서 HA기능까지 사용할  있기 때문에 많이 사용하는 솔루션중에 하나입니다.

 

■ MHA 구조

MHA MHA 매니저와 MHA 노드로 구성되어 있습니다. MHA 매니저는 마스터 서버를 모니터링 하며이상 유무를 판단하고 MHA노드는  서버들의 바이너리 로그를 확인하는 역활로 쓰입니다. 또한MHA서버는 여러 마스터-슬레이브로 구성된 복제 그룹 여러개를 모니터링   있습니다.

 

그림 1 : MHA 아키텍쳐

 

위의 그림에서 MHA Manager N개의 복제그룹을 모니터링 합니다. 모니터링중 특정 복제그룹에서마스터에 문제 발생시 슬레이브들중 하나를 마스터로 승격시키고 나머지 슬레이브들을 신규 마스터로승격된 서버로 붙게 됩니다. 이렇게 함으로써 지속적인 서비스가 가능하도록 합니다.

 

■ MHA 장애판단 기준  Failover 순서

 장애 판단 기준

MHA 매니저 서버의 장애 판단 기준은

1. 마스터 통신불가(네트워크 단절, 혹은 MySQL 통신포트 이상)

2. MySQL 서버 프로세스 이상

3. 기타 마스터 서버의 응답 불가

등이 있습니다.

 

 

그림 2. 페일오버 방법

 

 페일오버 순서

모든 슬레이브에서 Master_Log_File Read_Master_Log_Pos 이용하여 놓친 이벤트를 체크합니다.

이때 마스터의 로그를 가장 많이 가지고 있는 슬레이브가 최신 이벤트를 가지고 있는 슬레이브이며 슬레이브가 새로운 마스터가 후보군이 됩니다. 이때 세미싱크 방식의 복제를 사용한다면 리스크를 줄일 있습니다.

 

• Slave DB 가장 최신의 Slave DB 선택하여 Master DB 승격하게 됩니다.

슬레이브 로그파일인 relay log 파일이름과 포지션은 다릅니다. 그러나 mysqlbinlog 프로그램을 이용해서 릴레이 로그 내용을 확인해보면 end_log_pos라는 포지션 값이 있습니다. 포지션 값은 모든 슬레이브에서 같으며 동일한 유니크한 값입니다. 슬레이브에서 마스터 승격시 아래의 데이터를 참조하여 대상을 선정하게 됩니다.

   1) show slave status\G slave DB relay log 확인

   2) relay log 에서 end_log_pos 비교

 

• Slave DB 데이터 복제가 가장 느린 Slave(i) DB에서 SQL 스레드가 릴레이로그에 기록된 모든 이벤트 실행(executes) 하게 되고 과정이 끝날때까지 다음 과정은 대기 하게 됩니다.

 

• Slave(i) DB 적용한 마스터 DB 로그 파일과 로그 포지션 정보를 최신의 Slave DB(마스터로 승격된) 읽은 바이너리 로그 파일, 로그 포지션을 비교하여 차이가 발생하는 부분의 트랜잭션을 Slave(i) 반영하게 됩니다.

 

마지막으로 최신의 Slave DB(마스터로 승격된) 반영된 바이너리 로그 포지션 이후, 장애가 발생된 시점의 마지막 Master DB 바이너리 로그 포지션 차이를 적용하면 장애시점의 Master DB 데이터 시점까지 복구가 완료 되게 됩니다. 이때부터 장애가 발생한 Master DB 바이너리 로그 포지션 차이를 적용하면 모든 슬레이브 DB 장애시점의 Master DB 데이터까지는 복구가 완료가 됩니다.

 

■ MHA + 세미싱크(Semi - Sync)환경

MHA 세미싱크 환경에서 최고의 조합으로 평가되고 있습니다. 세미싱크를 이용한 복제방식이 아닌일반 비동기 방식이라면 마스터와 슬레이브 사이에서 데이터가 일치하지 않을  있습니다. 예를 들어 마스터에서 트랜잭션이  SQL 수행되고 있을때 슬레이브에 모두 동기화시키지 못하고 장애가발생할 경우 생각보다 많이 데이터가 유실될  있습니다. MHA 매니저가 가능한 기존 마스터의 바이너리 로그를 최대한 신규 마스터에 적용한다고는 하지만 어쩔  없이 데이터가 유실될 수도 있습니다. 그러나 세미싱크를 이용하면 마스터와 슬레이브의 데이터 동기화를 최대한 맞추어주기 때문에장애 발생시 기존 마스터와 신규마스터의 로그 비교를 빠르게 끝낼  있으며 페일오버시에도 데이터 유실이 거의 발생하지 않습니다. 이런 이유로 MHA에서는 세미싱크를 적극 권고하고 있습니다.

 

관련 링크

https://myinfrabox.tistory.com/268

 

[MySQL] [MHA] 02. MHA 환경설정 및 설치

■ MHA 구성 요소 ▶ Manager 패키지 매니저 노드에 설치되며 복제 그룹을 모니터링하는 패키지와 장애조치 스크립트들이 포함되어 있습니다. ▶ 노드 패키지 매니저 노드를 제외한 모든 노드에 설

myinfrabox.tistory.com

https://myinfrabox.tistory.com/269

 

[MySQL] [MHA] 03. MHA 테스트 및 Failover

■ MHA 체크 방법 먼저 MHA 설치 및 환경설정까지는 완료가 되었습니다. 이제 MHA 설정에 이상이 없는지 체크를 진행합니다. ▶ MHA 주요 명령어 확인 Script명 설명 masterha_check_ssh SSH 접속 체크 masterha_

myinfrabox.tistory.com

 

도움이 되셨다면 광고클릭 한번 부탁드립니다.

Designed by JB FACTORY