일종의 DB Proxy 역할로 Read / Write 분리, VIP 접근 / Auto Failover 기능을 설정할 수 있다.
# Maxscale은 WAS 서버와 DB 서버 사이에 위치해야하며 새로 추가적인 인스턴스를 생성해주자
[maxscale]
# maxscale 자체는 yum 기능에서 찾지 못하므로 repo 설정 후 찾아야한다.
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | bash
yum install -y maxscale
systemctl enable --now maxscale
vim /etc/maxscale.cnf
[server1]
type=server
address=<MASTER_DB_IP>
port=3306
protocol=MariaDBBackend
[server2]
type=server
address=<SLAVE_DB_IP>
port=3306
protocol=MariaDBBackend
[Maria-Monitor]
type=monitor
module=mariadbmon
servers=server1, server2
user='slave'
password='0000'
monitor_interval=2000ms
auto_failover=true
auto_rejoin=true
[Splitter-Service]
type=service
router=readwritesplit
servers=server1,server2
user='slave'
password='0000'
[Splitter-Listener]
type=listener
service=Splitter-Service
protocol=MariaDBClient
port=3306
systemctl restart maxscale
mysql -u slave -p'0000' -h <MAXSCALE_IP> -e "use pj; insert into user(name,password) values (@@hostname, @@hostname);"
[masterDB]
mysql -u root -p
MariaDB[(none)]>
use pj; select * from user;
# WRITE(insert)가 masterDB에서 작동한 것을 확인 할 수 있다
[maxscale]
mysql -u slave -p'0000' -h <MAXSCALE_IP> -e "select @@hostname;"
# READ(select)가 slaveDB에서 작동한 것을 확인 할 수 있다
maxctrl list servers;
# masterDB -> systemctl stop mariadb 후 slaveDB가 Master로 승격한 것을 볼 수 있다.
[slaveDB]
mysql -u root -p
mariaDB[(none)]>
use pj; insert into user(name,password) values('XXX','XXX');
mariaDB[(none)]>
use pj; select * from user;
# auto_failover로 인해 masterDB에도 저장되는 것을 확인할 수 있다
# 단 master / slave 구조가 역으로 구성된다.
[maxscale]
maxctrl call command mariadbmon switchover MariaDB-Monitor server1 server2
maxctrl list servers
# switchover 명령문으로 다시 M / S 구조가 원상태로 돌아간 것을 확인할 수 있다.