MHA의 주요 기능:
- 장애 발생 시 MySQL의 바이너리 로그 이벤트 저장;
- 최신 업데이트를 포함하는 슬레이브 서버 식별;
- 차이점 리레이 로그 적용을 통한 다른 슬레이브 서버 동기화;
- 마스터로부터 저장된 바이너리 로그 이벤트 적용;
- 새로운 마스터로 슬레이브 서버 승격;
- 나머지 슬레이브 서버들을 새로운 마스터에 연결하여 복제 설정;
MHA 환경 설정:
- 관리자 노드: 192.168.125.210
- 노드1: 192.168.125.200
- 노드2: 192.168.125.201
- 노드3: 192.168.125.202
1, 먼저 MySQL의 주-복제 설정을 구성해야 합니다.
2, SSH 비밀번호 없는 접근 설정:
[root@localhost ~]# ssh-keygen -t rsa -q -N "" // 공개 키 생성
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
[root@localhost ~]# cat .ssh/id_rsa.pub >> .ssh/authorized_keys // 공개 키를 인증 파일에 추가
[root@localhost ~]# chmod 600 .ssh/authorized_keys
[root@localhost ~]# scp .ssh/id_rsa .ssh/authorized_keys 192.168.125.200:/root/.ssh/ // 각 노드에 SCP를 통해 전송
[root@localhost ~]# scp .ssh/id_rsa .ssh/authorized_keys 192.168.125.201:/root/.ssh/
[root@localhost ~]# scp .ssh/id_rsa .ssh/authorized_keys 192.168.125.202:/root/.ssh/
3, MHA 설치:
다운로드 링크:
https://downloads.mariadb.com/MHA/mha4mysql-manager-0.58-0.el7.noarch.rpm
https://downloads.mariadb.com/MHA/mha4mysql-node-0.57-0.el7.noarch.rpm
EPEL 저장소 필요, YUM을 통한 설치. 관리자 노드에서는 매니저와 노드 패키지를 모두 설치하며, 다른 복제 노드에서는 노드 패키지만 설치합니다.
4, MHA 설정:
[root@manager ~]# cat /etc/masterha/app1.cnf
[server default]
manager_workdir=/var/lib/masterha/app1 # 매니저 작업 디렉토리 설정
manager_log=/var/log/masterha/app1.log # 매니저 로그 설정
master_binlog_dir=/var/lib/mysql/ # 마스터 바이너리 로그 위치 설정
user=admin # 모니터링 용 계정 설정, 모든 노드에서 생성 필요
password=securepass # 비밀번호
ssh_user=root # SSH 접속 사용자 설정
repl_user=repladmin # 복제 환경에서 사용할 복제 계정
repl_password=replicapass # 복제 계정 비밀번호
[server1]
hostname=192.168.125.200
port=3306
candidate_master=1 # 후보 마스터로 지정
[server2]
hostname=192.168.125.201
port=3306
candidate_master=1
[server3]
hostname=192.168.125.202
port=3306
5, MHA 테스트:
[root@manager ~]# masterha_check_ssh --conf=/etc/masterha/app1.cnf # SSH 연결 테스트
[root@manager ~]# masterha_check_repl --conf=/etc/masterha/app1.cnf # 복제 설정 테스트
6, MHA 시작 및 중지:
[root@manager ~]# nohup masterha_manager --conf=/etc/masterha/app1.cnf > /var/log/masterha/app1/manager.log 2>&1 &
[root@manager ~]# masterha_stop --conf=/etc/masterha/app1.cnf
수동으로 슬레이브를 마스터로 전환:
[root@manager ~]# masterha_master_switch --master_state=alive --conf=/etc/masterha/app1.cnf --orig_master_is_new_slave --running_updates_limit=3600 --interactive=0