它适用于:mysql和mariadb、Percona Server
同时还能够支持:AWS Aurora 和RDS、ClickHouse、Galera Cluster、Oracle NDB Cluster、SQLitemysql
Centos系统
添加源sql
cat <<EOF | tee /etc/yum.repos.d/proxysql.repo [proxysql_repo] name= ProxySQL YUM repository baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.0.x/centos/\$releasever gpgcheck=1 gpgkey=https://repo.proxysql.com/ProxySQL/repo_pub_key EOF
安装proxysqlyum install proxysql -y
数据库
启动前,先将配置文件修改,修改以下后端
[root@MWF-DB-T01 ~]# egrep -v "^#|^$" /etc/proxysql.cnf datadir="/gwmfc/app/proxysql " errorlog="/var/log/proxysql/proxysql.log" admin_variables= { admin_credentials="admin-sql:admin-sql;sys-sql:sys-sql " mysql_ifaces="127.0.0.1:6032" } mysql_variables= { threads=4 max_connections=2048 default_query_delay=0 default_query_timeout=36000000 have_compress=true poll_timeout=2000 interfaces="0.0.0.0:6033" default_schema="information_schema" stacksize=1048576 server_version="8.0.19" connect_timeout_server=3000 monitor_username="monitor-sql" monitor_password="monitor-sql" monitor_history=600000 monitor_connect_interval=60000 monitor_ping_interval=10000 monitor_read_only_interval=1500 monitor_read_only_timeout=500 ping_interval_server_msec=120000 ping_timeout_server=500 commands_stats=true sessions_sort=true connect_retries_on_failure=10 } mysql_servers = ( ) mysql_users: ( ) mysql_query_rules: ( ) scheduler= ( ) mysql_replication_hostgroups= ( )
注意:黄色部分是修改后的
修改pid文件的路径,文件/etc/systemd/system/proxysql.service
PIDFile=/data/proxysql/proxysql.pid
注意:配置文件和服务文件的修改是将/var/lib/proxysql的目录不使用了,数据目录放到了/data目录下(pid也放到了这里),日志放到了/var/log下
须要提早建立好目录centos
mkdir /var/log/proxysql / /gwmfc/app/proxysql -p chown -R proxysql.proxysql /var/log/proxysql /data/proxysql
启动服务缓存
systemctl enable proxysql systemctl start proxysql
在讲解配置时,先说一下配置层的架构(管理端口主要是更改配置的三层内容)
它一共由三层组成(runtime、memory、disk),以下图session
Runtime
顾名思义:运行层,它是真正跟客户端交互层
特色:不能直接改变,它由工做线程控制的内存数据结构。
它共包含三种配置:global variables、组和后端服务列表、用户列表数据结构
MEMORY
这一层:是放到内存的,它是可查看并编辑的,落地到数据表中
经过更新表内容就能够实现MEMORY更新,重要表以下:
mysql_servers---proxysql链接的后端服务
mysql_users----链接proxysql使用的帐号和密码(这个就是链接后端的帐号密码)
mysql_query_rules----查询规则列表(路由到不一样的后端服务),这些规则也能重写查询甚至缓存查询的结果。
global_variables-----全局变量,随时能够调整(只有加载到runtime才会对工做线程生效)架构
注意:变动内存中的数据后,须要加载到runtime和disk中,详见下面的文章管理端口里有详细方法。app
6032:管理端端口
6033:应用链接端口
管理端口做用:用于以上6类大功能的配置
应用链接端口:用于应用程序的链接
这里重点述说一下管理端口配置
登陆命令
$ mysql -u admin-sql –padmin-sql -h 127.0.0.1 -P6032 --prompt='Admin> '
注意:mysql8.0.4及以上的客户端在登陆时,请添加--default-auth=mysql_native_password
更改帐号密码方式:它是以全局变量方式存储set admin-admin_credentials = 'admin:admin;admin-psql:admin-psql';
#最好将admin帐号去掉,以防因proxysql有漏洞致使被黑
更改以后,执行以下命令:
load admin variables to runtime; save admin variables to disk;
NOTE:变动后的配置须要加载到不一样的层,命令以下
注意:配置命令使用的是sqlite3的sql语法,跟mysql有些不同。例如:USE在sqlite3中没有
有main/disk/stats/monitor/myhgm共计5个库
各个库说明
main:内存配置库,执行的sql命令都是变动的它(除了save、load)。
disk:它是main的镜像。
stats:包含runtime层的metrics(proxysql内部功能收集的),好比每一个规则匹配的次数统计,当前运行的查询等等。
monitor:包含监控metrics(和所链接的后端服务有关),例如链接某一个后端服务的最大、最小时间(ping方式)
myhgm:这里不说,只有开启debug才有。
关于库中表的命令使用说明
注意:没法用desc和show columns查看表结构,只能经过show create(比较操蛋),例如查看mysql_servers表结构
登陆帐号:默认是两个admin:admin(read&write) 和stats:stats(only read)
stats帐号用于监控(由admin-stats_credentials变量控制)
admin帐号用于配置(由admin-admin_credentials变量控制)
注意:
默认show tables;得到的结果是main库的全部表
如何查看库下有哪些表,例如查看stats库下有哪些表admin>show tables from stats;
后端服务一共两个库(1主1从)
主库:10.50.133.58
从库:10.50.133.107
适用范围:mysql、mariadb数据库
两张表:mysql_servers和mysql_replication_hostgroups(可选)
命令:
load mysql servers to runtime; save mysql servers to disk;
添加服务:
#添加主库Admin>
insert into mysql_servers(hostname,comment) values('10.50.133.58','master');`<br/>#添加从库<br/>
Admin>insert into mysql_servers(hostgroup_id,hostname,comment) values(1,'10.50.133.107','slave');`