ProxySQL(讀寫分離)部署
阿新 • • 發佈:2019-01-04
保護 info 環境 故障切換 mysql主從 start 生效 with 文件的
proxySQL是MySQL的中間件產品,是靈活強大的代理層,實現讀寫分離,支持Query路由功能,支持動態指定某個SQL進行緩存,支持動態加載配置,故障切換和一些SQL
過濾功能
環境:
192.168.139.152 proxy SQL中間件 server-id=1
192.168.139.153 master mysql server-id=2
192.168.139.154 slave mysql server-id=3
proxy SQL更多信息可以訪問 https://github.com/sysown/proxysql/wiki
MYSQL安裝(all node)
要點:所有節點都安裝MySQL並修改/etc/my.cnf 中的server-id
更新root密碼123qweASD!
修改配置文件/etc/my.cnf
[mysqld]
server-id=1
mysql主從部署(master-slave)
從節點read_only=on
PROXYSQL安裝(proxysql node)
安裝依賴包:
yum install -y perl-DBD-MySQL perl-DBI perl-Time-HiRes perl-IO-Socket-SSL
創建repo文件
cat <<EOF | tee /etc/yum.repos.d/proxysql.repo [proxysql_repo] name= ProxySQL YUM repository baseurl=http://repo.proxysql.com/ProxySQL/proxysql-1.4.x/centos/\$releasever gpgcheck=1 gpgkey=http://repo.proxysql.com/ProxySQL/repo_pub_key EOF
安裝proxy SQL
yum install -y proxysql
proxysql配置文件的路徑為 /etc/proxysql.cnf
啟動proxy SQL
service proxysql start
查看proxysql版本:
proxy SQL--version
proxy SQL 默認用戶名/密碼 admin/admin
proxysql 管理端口6032 對外服務端口6033
登陸proxysql :
mysql -u admin -padmin -h 127.0.0.1 -P 6032
MySQL>show databases; 顯示5個數據庫 main disk stats monitor stats_history
main 內存配置數據庫,即MEMORY ,表裏存放後端db實例,用戶驗證,路由規則等信息
主要表:mysql_servers 後端可以連接MySQL服務器的列表
mysql_users 配置後端數據庫的賬戶和監控賬戶
mysql_query_rules 指定Query路由到後端不同服務器的規則列表
註:runtime 開頭的表,表示當前運行的配置,不可修改;其余表修改後,LOAD使其生效,SAVE使其存到硬盤以供下次重啟加載
master 節點創建proxy SQL監控賬戶:
create user ‘monitor‘@‘192.168.139.%‘ identified by ‘123qweASD!‘;
grant all privileges on *.* to ‘monitor‘@‘192.168.139.%‘ with grant option;
master節點創建對外訪問賬戶:
mysql> create user ‘zs‘@‘192.168.139.%‘ identified by ‘123qweASD!‘;
mysql> grant all privileges on *.* to ‘zs‘@‘192.168.139.%‘ with grant option;
proxy SQL節點:添加主服務器列表 將主從MySQL加進去,自己不加
mysql -uadmin -padmin -h 127.0.0.1 -P 6032
mysql>insert into mysql_servers(hostgroup_id,hostname,port) values(10,‘192.168.139.153‘,3306);
mysql>insert into mysql_servers(hostgroup_id,hostname,port) values(10,‘192.168.139.154‘,3306);
mysql>load mysql servers to runtime;
mysql>save mysql servers to disk;
機器的狀態都是online狀態
proxysql配置監控賬號
mysql> set mysql-monitor_username=‘monitor‘;
mysql> set mysql-monitor_password=‘123qweASD!‘; ===》 /etc/proxysql.cnf 中的monitor_password也要修改
配置proxy SQL主從分組
mysql> insert into mysql_replication_hostgroups values(10,20,‘proxy‘);
mysql> load mysql servers to runtime;
mysql> save mysql servers to disk;
配置對外訪問賬號,默認指定庫,並對該用戶開啟事務持久化保護
mysql> insert into mysql_users(username,password,default_hostgroup) values(‘zs‘,‘123qweASD!‘,10);
mysql> update mysql_users set transaction_persistent=1 where username=‘zs‘;
mysql> load mysql users to runtime;
mysql> save mysql users to disk;
驗證登陸服務器就:
是主庫
讀寫分離策略配置
mysql> insert into mysql_query_rules(active,match_pattern,destination_hostgroup,apply) values(1,‘^SELECT.*FOR UPDATE$‘,10,1); ===》寫
mysql> insert into mysql_query_rules(active,match_pattern,destination_hostgroup,apply) values(1,‘^SELECT‘,20,1); ===》讀
mysql> load mysql query rules to runtime;
mysql> save mysql query rules to disk;
讀寫分離測試:
mysql -u zs -p123qweASD! -h 192.168.139.152 -P 6033 登陸proxysql所在機器登陸數據庫
mysql> select * from mysql.user; 讀操作
mysql> create database zhangyu ; 寫操作
登陸proxysql管理賬戶
10 是寫庫組 20是讀庫組
調整權重,讓某個機器承受更多讀操作
mysql> update mysql_servers set weight=10 where hostname=‘192.168.139.154‘;
mysql> load mysql servers to runtime;
mysql> save mysql servers to disk;
ProxySQL(讀寫分離)部署