상세 컨텐츠

본문 제목

[2020-02-19] CentOS-MariaDB MHA 원복하기

System/작업LOG

by 클리엘 클리엘 2020. 3. 3. 10:48

본문

1. Master 장비 복구

- 정상적으로 Master의 DB가 작동하는 상태로 전환

- 만약 Master장비가 다시 부팅이 되는경우 가상IP가 설정된 eth는 up상태가 되어서는 안됨(slave에서 가상IP가 이미 up된 상태이므로 Master도 up이 되면 IP충돌이 발생) -> 따라서 기본적으로 Master의 가상IP가 설정되는 eth도 Slave와 동일하게 IP를 제거하고 onboot를 no로 설정


2. Slave DB 상태 확인

show master status\G;
show slave status\G; -> Empty set이면 현재 slave가 master로 승격되었음을 뜻함

3. Slave에서 아래 명령을 내림

tail -n1000 /var/log/mha.log|grep 'All other slaves should start replication from here'|tail -n1

4. 본래 Master DB를 현재 Master DB(본래 Slave DB)의 Slave로 만듦

3에서 가져온 명령의 결과에서

CHANGE MASTER TO MASTER_HOST='xxx.xxx.xxx.xxx', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=505, MASTER_USER='mha', MASTER_PASSWORD='xxx';

부분을 가져와 Master장비의 DB에 설정


5. Master DB에서 start slave로 slave로 실행

show slave status\G; 로 상태확인

6. 동기화가 시작되어 현재 Slave에서 Master로의 DB의 변경사항이 반영됨


7. Slave에서 /var/log/mha(log가 남는 경로)의 xxx.failover.complete 파일 삭제


8. Slave에서 Master 쪽으로 이관처리

masterha_master_switch --master_state=alive --conf=/etc/mha.cnf

위 명령을 내린 후 Master 쪽(192.168.0.10)으로 DB 접속이 거부되는 상황이 발생함. master_ip_online_change를 확인해 보니 암호 앞에 \문자가 붙어서 그런 게 아닌가 하는 추측을 해봄(도데체 왜???)

 

대체방법으로 master_ip_online_change에서 command의 start와 stop부분에... = new MHA:DBHelpler(); 하위 위치에 $new_master_password와 $orig_master_password값을 강제 지정함. (오류 발생 X)


9. 8번의 명령을 수행하고 나면 console에 'mysql-bin.xxxxxx:xxx' 아래에

All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST='192.168.0.12', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.0
00005', MASTER_LOG_POS=342, MASTER_USER='mha', MASTER_PASSWORD='xxx';

형태의 Log를 출력함. 여기 change구문을 slave의 DB에 설정하고 start slave; 명령을 내림. 이렇게 하면 현재 Master(192.168.0.20)가 Slave가 되고 현재 Slave(192.168.0.10)가 Master로 처리됨.


10. Master DB의 내용이 Slave DB에 동기화되고 처음처럼 Master와 Slave로 원래 동작을 시작


11. Slave(Manager)의 상태 확인

masterha_check_status --conf=/etc/mha.cnf

12. mha 재가동

masterha_manager --conf=/etc/mha.cnf

관련글 더보기

댓글 영역