인프런 - 따라하며 배우는 MySQL on Docker 학습 정리 - Orchestrator를 이용한 HA(High Availability) HA 매뉴얼 테스트[수동 관리] (2)
1. HA(High Availabiliry) 장애 발생 테스트
1) HA 테스트 시나리오 : 인위적으로 db001 container를 강제로 종료시켜 장애를 발생시킴
2) Clusters의 Dashboard에서 db001(Master)가 Recover가 필요한 상태로 박스 안에 메뉴가 활성화된 상태이고
db002, db003 (두 개의 Slave)는 연결이 끊긴 상태인 것을 확인할 수 있음
3) 이때, Master의 Recovery 메뉴를 눌러 장애복구를 위하 Master로 변경할 Slave를 선택하면(Promote) db001은
별도 클러스터로 분리가 되고 db002가 Master, db003이 Slave인 새로운 클러스터가 생성됨
4) db002에 접속하여 mysql 명령으로 "show slave status\G" 명령어를 치면 "Empry set"이 출력됨
5) "select @@read_only" 파라미터 값을 출력하면 0으로 설정되어 쓰기가 가능한 상태인 것을 확인할 수 있음
6) db003에 접속하여 mysql 명령으로 "show slave status\G" 명령어를 치면, Master_Host가 db002로 되어 있음
2. 실습 과정
1) db001 정지
sudo docker stop db001
2) 서버 상태 변환 확인
- 일반 상황
- db001 장애 발생
3) Recover 메뉴를 이용한 수동 복구
- Recover 버튼을 누르고 메뉴에서 db002를 눌러 master로 승격시킨다.
4) 두 개의 클러스트로 분리
- db002 클러스트의 경우, db002가 마스터로 승격되고 db003이 슬레이브로 연결되어 있음
5) Docker Container에서 확인
- db002 Master 상태 확인
sudo docker exec -it -uroot db002 /bash
mysql -uroot -p
mysql> show slave status\G
mysql> show global variables like 'read_only';
- db003 Slave 상태 확인
3. HA(High Availabiliry) 장애 복구(원복) 테스트
1) HA 테스트 시나리오 : 분리된 db001 클러스트를 db002 Master 하위 Slave로 연결
2) db001을 재가동 시키고 mysql 명령어로 Slave 설정을 수동으로 함
2. 실습 과정
1) db001 mysql Slave 설정
sudo docker start db001
sudo docker exec -it -uroot db001 bash
mysql -uroot -p
mysql> set global read_only=1;
mysql> CHANGE MASTER TO MASTER_HOST='db002', MASTER_USER='repl', MASTER_PASSWORD='repl', MASTER_AUTO_POSITION=1;
mysql> start slave;
mysql> show slave status\G
2) Dashboard에서 상태 확인
- 변경 전
- 변경 후
댓글