Database/MHA

[MHA] Mysql MHA FailOver 확인 및 이후 원복 절차

히진 2018. 9. 2. 18:58
반응형

MHA - FailOver 이후 원복 작업


Failover 이후 Master-Slave상태를 원복하는 작업 절차입니다. 

이때 MHA 데몬이 중단된 상태에서 실행해야 합니다.(실행상태에서는 오류가 발생함)


1.MHA 원복 현재 DB장비 상태 확인


Master DB의 장애 이후 Slave 장비의 현재 상태 확인



Slave였던 Slave장비가 Master로 승격된 것을 확인 

이후 장애가 났던  Master 장비의 장애 복구 후 기동해 놓는다. 


Master 장비와 Slave장비를  Master/Master 상태로 세팅 한다.

※Master장비 Database 접속 ip는 내려가 있는 상태여야함



2.MHA 원복 Slave장비와 장애가 발생한 Master장비의 데이터 동기화


    1.     온라인 상태에서 장애 원복을 위해 Master장비를 Slave장비의 Slave로 설정

MHA Manager에서는 FailOver 발생시 MHA.log에 장애 발생시 binlog position을 남겨둔다.



해당 로그는 All other slaves should start replication으로 시작하는 로그이며 해당 로그를 보면 Master_LOG_FILE, MASTER_LOG_POS 을 남겨 둔 것을 확인 할 수있다.

해당 로그를 편하게 찾기 위해선 해당 명령어를 사용하면 되며 해당 명령어를 스크립트로 작성하여 장애시 빠른 Master_LOG_POS 을 찾을 수 있다.

tail -n1000 /install/log/masterha/MHA.log|grep 'All other slaves should start replication from here'|tail -n1

해당 명령어 실행시 

Tue May 15 15:23:33 2018 - [info]  All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST='192.xxx.xxx.xxx', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000010', MASTER_LOG_POS=468109880, MASTER_USER='mha', MASTER_PASSWORD='xxx';

로그가 나오는데 Failover시 필요한 내용은 빨간 줄이다. MHA에서는 Slave 상태로 들어갈 수 있는 명령어를 로그로 찍어주고 있다.

Master 장비

         mysql -uroot -pxxxx (db접속)

         CHANGE MASTER TO MASTER_HOST='192.xxx.xxx.xxx', 

         MASTER_PORT=3306, 

         MASTER_LOG_FILE='mysql-bin.000015',

         MASTER_LOG_POS=468109880,

         MASTER_USER='mha', 

         MASTER_PASSWORD='mha123';


        start slave;

        Show slave status\g;


해당 Change 로그를 복사하여 PASSWORD 부분만 입력하여 start slave를 실행하게 되면 Master장비는 Slave장비에 Slave상태로 들어가 장애 발생 시점부터 데이터를 동기화 하기 시작한다.


3.MHA 원복 – Slave장비에서 Master장비의 서비스 이관


rm -f /install/log/masterha/masterha_default.failover.complete
masterha_master_switch --master_state=alive --conf=/etc/masterha-default.cnf

※서비스를 이관시키기 전에 반드시 masterha_default.failover.complete 파일을 삭제하여야 한다. 

해당 파일을 삭제 하지 않고서는 서비스 이관은 가능하나 서비스 이관 후 MHA Manager 실행이 불가능 하다. 

이는 FailOver 발생한 것을 확인하는 절차이다.



정상적으로 Slave 장비 -> Master 장비로 Switch되는 로그입니다.
Switch시에도 All other slaves should start replication로 시작하는 로그를 남기는데 이는 Slave장비에서 Master로 서비스를 이관할때 Slave장비의 Position을 남겨둡니다. 해당 Position을 이용하여 Slave장비느 다시 Master 장비의 Slave로 들어가 데이터를 동기화를 시작합니다.



All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST='192.xxx.xxx.xxx', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000017', MASTER_LOG_POS=154, MASTER_USER='mha', MASTER_PASSWORD='mha123';

이후 동일하게 Slave장비도 db를 접속하여 slave상태로 이어주면 된다.

Slave 장비

         명령어

         Masterha_check_status --conf=/etc/masterha-default.conf (MHA Manager 현재 상태 확인)

         nohup Masterha_manager --conf=/etc/masterha-default.conf (MHA Manager 기동)


Slave 장비

         mysql -uroot -pxxxx (db접속)

         CHANGE MASTER TO MASTER_HOST='192.xxx.xxx.xxx', 

         MASTER_PORT=3306, 

         MASTER_LOG_FILE='mysql-bin.000017',

         MASTER_LOG_POS=154,

         MASTER_USER='mha', 

         MASTER_PASSWORD='mha123';


        start slave;

        Show slave status\g;





Master / Slave 장비

         명령어

         ifconfig


※Switch를 했을때 FailOver로 인해 내려갔던 Master IP가 올라온 것을 확인하고 Slave장비의 서비스 IP가 내려갔는지 확인



4.MHA 원복 – 원복 완료 MHA Manager 장애모니터링 시작


Slave 장비

         명령어

         Masterha_check_status --conf=/etc/masterha-default.conf (MHA Manager 현재 상태 확인)

         nohup Masterha_manager --conf=/etc/masterha-default.conf (MHA Manager 기동)

반응형