简介
ProxySQL 是基于 MySQL 的一款开源的中间件的产品,是一个灵活的 MySQL 代理层,可以实现读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行缓存,支持动态加载(无需重启 ProxySQL 服务),故障切换和一些 SQL 的过滤功能。
官网
git: https://github.com/sysown/proxysql
website: https://www.proxysql.com/
集群
搭建两台一模一样的,前面挂SLB分发端口
架构
安装依赖
yum install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
部署
# 下载
wget https://github.com/sysown/proxysql/releases/download/v2.0.8/proxysql-2.0.8-1-centos7.x86_64.rpm
# 安装
rpm -ivh proxysql-2.0.8-1-centos7.x86_64.rpm
# 查看相应安装文件路径,有哪些文件
[root@hostname]# rpm -ql proxysql
/etc/logrotate.d/proxysql
/etc/proxysql.cnf
/etc/systemd/system/proxysql.service
/usr/bin/proxysql
/usr/share/proxysql/tools/proxysql_galera_checker.sh
/usr/share/proxysql/tools/proxysql_galera_writer.pl
/etc/proxysql.cnf
是 ProxySQL 的配置文件
# 启动:
systemctl start proxysql.service
6032 是 ProxySQL 的管理端口号,6033是对外服务的端口号 ,ProxySQL 的用户名和密码都是默认的 admin
# 登录
mysql -uadmin -padmin -h 127.0.0.1 -P 6032
可见有五个库: main、disk、stats 、monitor 和 stats_history
main: 内存配置数据库,即 MEMORY,表里存放后端 db 实例、用户验证、路由规则等信息。main 库中有如下信息:
库下的主要表:
mysql_servers
: 后端可以连接 MySQL 服务器的列表mysql_users
: 配置后端数据库的账号和监控的账号。mysql_query_rules
: 指定 Query 路由到后端不同服务器的规则列表。
注: 表名以 runtime_开头的表示 ProxySQL 当前运行的配置内容,不能通过 DML 语句修改。
只能修改对应的不以 runtime 开头的表,然后 “LOAD” 使其生效,“SAVE” 使其存到硬盘以供下次重启加载。
disk :持久化的磁盘的配置
stats: 统计信息的汇总
monitor:一些监控的收集信息,比如数据库的健康状态等
stats_history: 这个库是 ProxySQL 收集的有关其内部功能的历史指标
配置 ProxySQL 所需账户
在 Master (xx) 的MySQL 上创建 ProxySQL 的监控账户和对外访问账户
#proxysql 的监控账户
create user 'monitor'@'10.0.0.%' identified by '123456';
grant all privileges on *.* to 'monitor'@'10.0.0.%' with grant option;
#proxysql 的对外访问账户
create user 'proxysql'@'10.0.0.%' identified by '123456';
grant all privileges on *.* to 'proxysql'@'10.0.0.%' with grant option;
flush privileges;