ProxySQL安装
配置软件源
cat > /etc/yum.repos.d/proxysql.repo << EOF
[proxysql]
name=ProxySQL YUM repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.7.x/centos/\$releasever
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-2.7.x/repo_pub_key
EOF

yum makecache

安装软件
yum install proxysql

启动服务
systemctl status proxysql
systemctl start proxysql
systemctl is-active proxysql
ss -tunlp | grep proxy

登录
mysql -uadmin -padmin -P6032 -h127.0.0.1

ProxySQL配置
查看配置
show databases;
use main;
select * from proxysql_servers;

配置后端节点
insert into mysql_servers(hostgroup_id,hostname,port)values(530,'10.0.0.12',3306);
insert into mysql_servers(hostgroup_id,hostname,port)values(531,'10.0.0.15',3306);
保存配置
加载到RUNTIME
load mysql servers to runtime;

保存硬盘
save mysql servers to disk;

master主节点
创建用户并授权
create user proxyer@'10.0.0.%' identified by '123456';
grant REPLICATION CLIENT on *.* to proxyer@'10.0.0.%';

ProxySQL配置
修改配置
set mysql-monitor_username='proxyer';
set mysql-monitor_password='123456';
load mysql variables to runtime;
save mysql variables to disk;

insert into mysql_replication_hostgroups(writer_hostgroup,reader_hostgroup,comment) values(530,531,"test");
load mysql servers to runtime;
save mysql servers to disk;

查看节点
select * from mysql_replication_hostgroups;
select hostgroup_id,hostname,port,status,weight from mysql_servers;

master节点配置
MySQL 配置
create user sqluser@'10.0.0.%' identified by '123456'; 之前加过了
grant all on *.* to sqluser@'10.0.0.%';

ProxySQL配置
用户sqluser添加到表
insert into mysql_users(username,password,default_hostgroup) values('sqluser','123456',530);
load mysql users to runtime;
save mysql users to disk;

Prosql连接到master节点
mysql -usqluser -p'123456' -P6033 -h127.0.0.1
select @@server_id,@@read_only;

配置读写分离
insert into mysql_query_rules(rule_id,active,match_digest,destination_hostgroup,apply)VALUES(1,1,'^SELECT.*FOR UPDATE$',530,1),(2,1,'^SELECT',531,1);
load mysql query rules to runtime;
save mysql query rules to disk;

查看读写分离
mysql -usqluser -p'123456' -P6033 -h127.0.0.1 -e'select @@server_id,@@read_only'
mysql -usqluser -p'123456' -P6033 -h127.0.0.1 -e 'start transaction;select @@server_id,@@read_only;commit;'

