3-Tier (DB Write / Read Seperate)

산본8단지주민·2024년 3월 27일
0

3-Tier

목록 보기
4/5

MariaDB Maxscale

일종의 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');

[masterDB] systemctl start mariadb mysql -u root -p

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 구조가 원상태로 돌아간 것을 확인할 수 있다.

profile
Just Practice

0개의 댓글