[DB] MariaDB 이중화 구성 설정 방법과 분산처리 (Replication Master/Slave)
하나의 DB 서버에 많은 트래픽이 몰리게 된다면 큰 병목 현상이 일어나 정상적인 서비스를 제공하지 못하는 상황이 발생하기도 합니다. 이를 개선하기 위해 MySQL과 MariaDB는 DB서버를 분산하여
trillion-binary.tistory.com
이어서 이 구조는
Master DB 서버에서 WRITE/UPDATE 작업이 일어나게 되면


MariaDB Package Repository Setup and Usage
Executing and using a convenient shell script to set up the MariaDB Package Repository.
mariadb.com
# 설치 명령어 curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash sudo yum install maxscale MariaDB-client # 설치 완료 및 포트 확인 rpm -q maxscale MariaDB-client sudo netstat -antp |
CREATE USER 'MAX'@'%' IDENTIFIED BY 'password'; GRANT SELECT ON mysql.user TO 'MAX'@'%'; GRANT SELECT ON mysql.db TO 'MAX'@'%'; GRANT SELECT ON mysql.tables_priv TO 'MAX'@'%'; GRANT SELECT ON mysql.columns_priv TO 'MAX'@'%'; GRANT SELECT ON mysql.procs_priv TO 'MAX'@'%'; GRANT SELECT ON mysql.proxies_priv TO 'MAX'@'%'; GRANT SELECT ON mysql.roles_mapping TO 'MAX'@'%'; GRANT SHOW DATABASES ON *.* TO 'MAX'@'%'; |
# Master mysql -u MAX -p -h 172.31.000.000 -P 3306 # Slave mysql -u MAX -p -h 172.31.000.000 -P 3306 # MaxScale mysql -u MAX -p -h 172.31.000.000 -P 3306 enter passowrd: [비밀번호 입력] |
https://mariadb.com/kb/en/mariadb-maxscale-6-readwritesplit/
Readwritesplit
Readwritesplit This document provides a short overview of the readwritesplit router module and its intended use case scenarios. It also displays all router configuration param...
mariadb.com
#MaxScals 환경설정 편집 sudo vi /etc/maxscale.cnf [maxscale] threads=auto admin_host=0.0.0.0 #MaxScale Admin서버를 외부에서도 접속할 수 있게 설정 admin_secure_gui=false #HTTPS 사용 안함 [server1] type=server address=[MASTER SERVER의 내부 IP] port=3306 protocol=MariaDBBackend [server2] type=server address=[SLAVE SERVER의 내부 IP] port=3306 protocol=MariaDBBackend [Replication-Monitor] type=monitor module=mariadbmon servers=server1,server2 user=DEV password=[DEV_PASSWORD] monitor_interval=2000ms [Splitter-Service] type=service router=readwritesplit servers=server1, server2 user=MAX password=[MAX_PASSWORD] slave_selection_criteria=LEAST_CURRENT_OPERATIONS #활성 작업이 가장 적은 슬레이브로 접속을 시도한다. master_accept_reads=true #Master DB도 READ 작업이 실행되게 허용해준다 [Splitter-Listener] type=listener service=Splitter-Service protocol=MariaDBClient port=3306 |
# 저장 후 MaxScale 서비스를 재시작해줍니다. sudo systemctl restart maxscale # 오류 시에는 MaxScale 로그 확인 cat /var/log/maxscale/maxscale.log # MaxScale 상태 확인 명령어 maxctrl list servers maxctrl list services maxctrl list listeners maxctrl show server server1 maxctrl show server server2 |
-- 현재 접속된 호스트의 주소 SELECT @@HOSTNAME; -- DB계정별 명령어 사용 횟수 조회 허용하기 -- 사용 후에는 GLOBAL USERSTAT = 0 으로 되돌릴 것. SET GLOBAL USERSTAT = 1; -- MAX 계정의 SELECT, INSERT 등의 쿼리 사용량을 확인해봅니다. SELECT user, rows_read, rows_inserted, select_commands, update_commands FROM INFORMATION_SCHEMA.USER_STATISTICS; |
실습 참고 영상
[Database] CentOS 8에 MaxScale 설치하기 - YouTube
'DataBase > Maria DB' 카테고리의 다른 글
[DB] MariaDB DeadLock 문제 해결 (0) | 2023.02.17 |
---|---|
[DB/AWS] MariaDB Mariabackup 복원하기 (0) | 2023.02.09 |
[DB/AWS] MariaDB Mariabackup을 이용한 백업 스케쥴 설정 2 (0) | 2023.02.09 |
[DB/AWS] MariaDB Mariabackup을 이용한 백업 스케쥴 설정 (0) | 2023.02.09 |
[DB] Database Lock? (0) | 2023.02.08 |