Database/Maria,Mysql
인프런 - 따라하며 배우는 MySQL on Docker 학습 정리 - ProxySQL 실습 (2)
* 아래와 같은 클러스트 구조에서 실습한다.
1. Prxyo Layer 구성
1) 테스트 환경 구성
- 테스트 데이터베이스 생성
- 어플리케이션에서 사용할 user 생성
- proxysql용 모니터링 user 생성
2) 사용자 생성
- db001
sudo docker exec -it -uroot db001 bash
mysql -uroot -p
mysql> create database testdb default character set utf8;
mysql> create user appuser@'%' identified by 'apppass';
mysql> grant select, insert, update, delete on testdb.* to appuser@'%';
mysql> create user 'monitor'@'%' identified by 'monitor';
mysql> grant REPLICATION CLIENT on *.* to 'monitor'@'%';
mysql> flush privileges;
3) 테스트 환경 구성
- proxysql 테이블 정보
- proxysql(서버정보)
mysql -h127.0.0.1 -P16032 -uradmin -pradmin --prompt "ProxySQL Admin>"
ProxySQL Admin> INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (10, 'db001', 3306);
ProxySQL Admin> INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (20, 'db001', 3306);
ProxySQL Admin> INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (20, 'db002', 3306);
ProxySQL Admin> INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (10, 'db003', 3306);
ProxySQL Admin> INSERT INTO mysql_replication_hostgroups VALUES (10,20,'read_only','');
ProxySQL Admin> LOAD MYSQL SERVERS TO RUNTIME;
ProxySQL Admin> SAVE MYSQL SERVERS TO DISK;
- proxysql(user 정보)
ProxySQL Admin> INSERT INTO mysql_users(username, password, default_hostgroup, transaction_persistent) VALUES ('appuser','apppass',10,0);
ProxySQL Admin> LOAD MYSQL USERS TO RUNTIME;
ProxySQL Admin> SAVE MYSQL USERS TO DISK;
- proxysql(쿼리 룰) : 어플리케이션에서 받은 쿼리를 분기시켜줄 룰 선언
ProxySQL Admin> INSERT INTO mysql_query_rules(rule_id, active, match_pattern, destination_hostgroup) VALUES (1,1,'^SELECT.*FOR UPDATE$',10);
ProxySQL Admin> INSERT INTO mysql_query_rules(rule_id, active, match_pattern, destination_hostgroup) VALUES (2,1,'^SELECT',20);
ProxySQL Admin> LOAD MYSQL QUERY RULES TO RUNTIME;
ProxySQL Admin> SAVE MYSQL QUERY RULES TO DISK;
- 테스트를 위한 스크립트 작성(connect 테스트)
vi app_test_conn.sh
#!/bin/bash
while true;
do
mysql -uappuser -papppass -h172.31.10.19 -p16033 -N -e "select @@hostname,now()" 2>&1| grep -v "Warning"
sleep 1
done
댓글