Database/Maria,Mysql

인프런 - 따라하며 배우는 MySQL on Docker 학습 정리 - Orchestrator를 이용한 HA(High Availability) HA 매뉴얼 테스트[수동 관리] (2)

bluebamus 2022. 1. 9.

2022.01.08 - [Database/Maria,Mysql] - 인프런 - 따라하며 배우는 MySQL on Docker 학습 정리 - Orchestrator를 이용한 HA(High Availability) 구성 방법 (1)

 

인프런 - 따라하며 배우는 MySQL on Docker 학습 정리 - Orchestrator를 이용한 HA(High Availability) 구성 방법

1. Orchestrator Container 실행 sudo docker run -it --name orchestrator -h orchestrator --net mybridge --net-alias=orchestrator -p 3000:3000 -d openarkcode/orchestrator:latest sudo docker ps --format..

devspoon.tistory.com

 

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로 승격시킨다.

Recover 버튼을 누르고 db002를 눌러 master로 승격

 

    4) 두 개의 클러스트로 분리

        - db002 클러스트의 경우, db002가 마스터로 승격되고 db003이 슬레이브로 연결되어 있음

클러스트 분리
db001 클러스트 상태
db002 클러스트 상태

    

    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';

slave 상태 확인
read_only 값 확인, 쓰기가 가능한 상태

 

        - db003 Slave 상태 확인

master_host 값 변경

 

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에서 상태 확인

        - 변경 전

장애 복구 전

        - 변경 후

장애 복구 후

댓글