DB & AWS Knowledge
MHA 구성 방법 본문
- 개요 (참고 출처: https://khj93.tistory.com/entry/MHA-MHA-구성-및-설치-DB이중화-Fail-Over-테스트, https://seul96.tistory.com/47)
- MHA 테스트 구성을 위해서 아래의 서버를 미리 준비한다.
- OS : CentOS7 / DB : MySQL 5.7 을 기준으로 구성한다.
- MHA 테스트 구성을 위해서 아래의 서버를 미리 준비한다.
Host | IP | VIP | Role |
mha-test-monitor | 192.168.0.101 | 192.168.137.101 | Monitoring |
mha-test-master | 192.168.0.102 | 192.168.137.102 | Master |
mha-test-slave01 | 192.168.0.103 | 192.168.137.103 | Slave01 |
mha-test-slave02 | 192.168.0.104 | 192.168.137.104 | Slave02 |
-
- 실제 IP 와 내부 통신용으로 쓰일 VIP 를 구성한다. (eth 추가)
- 서버의 역할은 아래와 같다 (Monitor 를 제외한 모든 서버에 MySQL 5.7 을 구성)
- 실제 IP 와 내부 통신용으로 쓰일 VIP 를 구성한다. (eth 추가)
Host | Role | Description |
mha-test-monitor | Monitor | Master, Slave 서버간의 health check 및 기타 관련 log 를 쌓는 서버 |
mha-test-master | Master (MySQL 5.7) | App 이 DB write 를 위해서 접근하는 서버 |
mha-test-slave01, mha-test-slave02 | Reader (MySQL 5.7) | App 이 DB read 를 위헤서 접근하는 서버 |
-
- 각 서버 간의 제한된 성능 spec 이 없으므로 자신이 실제로 사용할 서버의 spec 은 상황에 맞게 임의로 구성한다. (해당 자료는 각 서버당 cpu 2 core, mem 4G 로 설정)
- 각 서버 간의 제한된 성능 spec 이 없으므로 자신이 실제로 사용할 서버의 spec 은 상황에 맞게 임의로 구성한다. (해당 자료는 각 서버당 cpu 2 core, mem 4G 로 설정)
- 구성방법
- 우선 Monitor 서버에 아래와 같이 yum 으로 MHA 툴이 사용하는 perl 을 설치한다.
$> yum -y install perl-CPAN perl-DBD-MySQL perl-log-Tiny perl-log-Dispatch perl-parallel perl-Module-Install
- 그외의 Master, Slave 는 위의 모듈중 아래의 3개만 설치한다. yum 이 정상적으로 구동되어서 설치가 된다면 아래와 같이 perl 이 설치된다.
$> yum -y install perl-CPAN perl-DBD-MySQL perl-Module-Install
- 각 서버에 perl 이 정상 설치가 되었다면 Master, Slave 서버에 MySQL 을 설치 해둔 후, mha tool file 도 다운 받아 보관할 디렉토리에 넣는다. (파일은 구글링을 통해 받는다. 해당 페이지에서는 0.57 버전을 사용했다.)
- 그 후, monitor 로 사용할 서버와 실제 운영 node 로 사용 될 서버는 아래와 같이 각각 위의 파일들을 아래의 make 명령어를 수행하여 실행한다. 정상 수행 시, 아래의 화면을 볼 수 있다.
-- Monitor 서버
$> tar xvzf mha4mysql-manager-0.57.tar
$> cd mha4mysql-manager-0.57.tar
$> perl Makefile.PL
$> make
$> make install
-- 모든 서버 (Monitor 포함)
$> tar xvzf mha4mysql-node-0.57.tar
$> cd mha4mysql-node-0.57.tar
$> perl Makefile.PL
$> make
$> make install
-- Make 설정이 완료되면 각 Master, Slave 서버간에 각 서버 간 Replication 통신을 할 DB 계정을 GRANT 로
생성한다. 이 가이드에서는 mha 라는 계정을 사용한다.
$> GRANT ALL PRIVILEGES ON *.* TO ‘mha’@'%' IDENTIFIED BY '사용할 비밀번호';
-- 다시 Monitor 서버로 돌아가서 아래와 같이 masterha-default.cnf 파일을 수정 혹은 생성한다. MHA 구성 후
사용할 config 파일이므로 확인 및 사용이 용이한 디렉토리에 임의로 구성한다.
vi masterha-default.cnf
-- 해당 파일로 들어가면 아래와 같이 일부 옵션을 조절 할 수 있다. 해당 테스트에서는 아래와 같이 구성했다. 해당
내용에서 IP 등의 정보는 상황에 맞게 조절한다. (참조 사이트에는 아래의 기본옵션이외에 추가 옵션을 부여 했으므
로, 상세한 작동 옵션을 원한다면 위의 참조 사이트를 확인한다.)
- 설정이 끝났다면 이제 각 서버간의 ssh 통신을 연결 해 줄 차례다. 그러기 위해서는 각 서버 간 DB 를 통신할 OS
계정이 PW 없이 통신 및 원격 기능 사용이 가능해야 하기에 아래와 같이 모든서버에 설정을 해준다.
- 먼저 monitor 서버에서 부터 rsa 키를 생성한다.
- 그 후, master 및 slave 서버에 생성한 키를 아래와 같이 복사시킨다. 복사가 끝나면, master / slave 서버에서도
동일하게 key 생성 후 복사한다.
- 각 서버간에 위의 작업을 완료했다면 이제 ssh 테스트를 통하여 각 서버간에 통신이 되는지를 확인한다. 위에서
구성했던 monitor 서버의 masterha 디렉토리로 이동하여 아래의 커맨드를 사용한다. cnf 파일은 생성해 두었던
디렉토리로 지정해 준다. 테스트가 정상으로 수행된다면, 아래의 화면을 볼 수 있다.
$> masterha_check_ssh --conf=/data/test/masterha-default.cnf
- 그 후, replication health check 를 테스트 하도록 아래의 커맨드를 입력한다. 정상 수행 시, 아래의 화면을 볼 수
있다. cnf 파일은 생성해 두었던 디렉토리로 지정해 준다.
$> masterha_check_repl --conf=/data/test/masterha-default.cnf
- 위의 테스트가 정상 완료 되었다면 MHA 프로세스를 켜준다. 정상 수행 시, 아래의 화면을 볼 수 있고, 프로세스
도 기동 된 것을 볼 수 있다.
$> masterha_manager --conf=/data/test/masterha-default.cnf
- 위의 테스트가 정상 완료 되었다면 MHA 프로세스를 켜준다. 정상 수행 시, 아래의 화면을 볼 수 있고, 프로세스
도 기동 된 것을 볼 수 있다.
$> masterha_manager --conf=/data/test/masterha-default.cnf
- MHA 프로세스가 정상 기동 중 이라면, 이제 서버 혹은 DB 이상에 대한 failover 테스트를 수행 해 볼 수 있다. Master 서버에서 임의로 shutdown 을 수행한다.
(해당 테스트에서는 본인이 작성한 shutdown 스크립트를 실행 했으나, 기타 여러 방법으로 DB 를 종료해도 상관없다.)
- Master 서버에서 DB가 비정상 기동이 된다면, Monitor 서버에는 아래와 같이 지연되었던 binlog 내용 동기화 및 failover 를 수행한다.
- Failover 가 완료되면 masterha 디렉토리에 아래의 로그들이 생성되고, 위의 config 파일에서 failover 과정 로그 적재 디렉토리도 기재 했다면, 과정 로그도 따로 생성된다. 로그파일을 확인 해 보면 어떤 slave 서버가 failover 되어 Master 로 승격됐는지 확인 할 수 있다. (해당 테스트에서는 MHA.log 로 생성)
- 그 후, 기존에 Master 였던 서버가 failover 가 되어서 Slave 서버로 운영되게 하려면 Master 서버 내 DB 를 다시 기동 후 승격된 Master 서버 (테스트에서는 Slave01 서버) 의 정보를 다시 입력하여
재동기화를 시켜 준다.
- 동기화를 재 설정하여 정상 연결이 된다면, 위의 save, masterha 로그 삭제 후, 아래의 명령어를 입력하여 Master 서버를 switch 해 본다. 일부 항목은 질의를 하는데 아래의 화면을 참고하여 yes 를 입력한다.
$> masterha_master_switch --master_state=alive --conf=/data/test/masterha-default.cnf
- Switch 가 완료됐다면 slave02 서버에서 master 서버가 변경 되었는지 확인 한다.
- Slave01 서버도 switch 된 master 서버로 연결 시키기 위해서 추가 세팅이 필요하다. 우선, 아래의 명령어를 통하 slave 서버에 데이터 유입을 방지토록 하고 master 연결 설정을 바꿔준다.
mysql> set global read_only=1;
- 위의 방법으로 Master 서버가 다시 Master 역할을 하도록 변경 완료 했다면, Monitor 서버에서 mha 프로세스를 재기동한다.
'MySQL > H.A (High Availability)' 카테고리의 다른 글
갈레라 클러스터 구성 방법 (0) | 2021.03.04 |
---|---|
갈레라 클러스터 개요 (0) | 2021.03.04 |
MHA 개요 (0) | 2021.03.03 |
MMM 구성 방법 (0) | 2021.03.03 |
MMM 개요 (0) | 2021.03.03 |