본문 바로가기
Dev/MySQL

[MySQL] MySQL MMM

by 흰바다제비 2022. 7. 26.
728x90

MMM HA(High Availability) 솔루션 중 하나이다.

 

-     MMM의 작동 순서

1.     Active Master에서 장애 발생 시 MMM Manager는 장애를 감지한다.

2.     Active Master의 접속을 차단하고 Passive Master로 서비스의 접속을 넘긴다.

 

-     구성 :

MMM Monitor : MMM Agent 서버의 상태를 체크하고 상태에 따라 역할을 변경, 관리

MMM Agent : MMM에서 reader, writer 역할을 하는 구성원

1개의 MMM Monitor2개의 MMM Agent로 구성한다.

 

같은 서버 내에서 포트 번호를 다르게 주어 MySQL MMM을 구성한다. 과정을 간단하게 기술한다.

 


MMM 설치 및 세팅


-    
mmm에 사용할 계정 생성

Create user ‘mmm_monitor’@’%’ identified by monitorpw;
Create user ‘mmm_agent’@’%’ identified by agentpw;

Grant all privileges on *.* to ‘mmm_monitor’@’%’;
Grant all privileges on *.* to ‘mmm_agent’@’%’;

 

-     Host에 사용자 계정 추가

useradd –comment “MMM Script owner” –shell /sbin/nologin mmmd

 

-     MMM 설치

yum install –y mysql-mmm mysql-mmm-monitor mysql-mmm-agent

Conf 파일 설정

 

 

-     mmm_common.conf 설정

…
<host db1>
    ip      192.168.4.37
    mode    master	
    port    3306
    peer    db2
</host>

<host db2>
    ip      192.168.4.37
    mode    master
port    3307
    peer    db1
</host>

<role writer>
    hosts   db1, db2
    ips     192.168.4.250
    mode    exclusive
</role>

<role reader>
    hosts   db1, db2
    ips     192.168.4.251, 192.168.4.252
    mode    balanced
</role>

 

-     mmm_mon.conf 설정

<monitor>
…
ping_ips            192.168.4.37
    …
</monitor>

<host default>
    monitor_user        mmm_monitor
    monitor_password    monitorpw
</host>

 

-     mmm_agent.conf 설정

include mmm_common.conf
this db1

MMM 시작 및 상태 확인

 

-     부팅시 자동 시작 등록

systemctl enable mysql-mmm-monitor

systemctl enable mysql-mmm-agent

 

-     mmm 시작

systemctl start mysql-mmm-monitor

systemctl start mysql-mmm-agent

 

-     mmm_control show (연결 성공)

+) mmm 서비스 시작 직후 statusAWAITING_RECOVERY 이다. 앞서 mmm_mon_conf에서 auto_set_online 60으로 설정해주었기 때문에 60초후 자동으로 상태가 ONLINE 으로 변경된다.

 

혹은 set_online 커맨드 입력시 바로 ONLINE으로 상태 전환이 가능하다

[root@localhost ~]# mmm_control set_online db2
 OK: State of ‘db2’ changed to ONLINE. Now you can wait some time and check its new roles!

 

+) db1db2는 서로 양방향 replication 상태여야 한다. 이를 설정해주고, db1의 전체 databasedump하여 db2에 복원해주어야 한다. 사용자를 두 곳에 각각 생성해주지 않아도 dump로 인해 나머지도 같은 유저 정보를 가지고 있다.

 

728x90

댓글