转载来自 骏马金龙 https://www.junmajinlong.com
ProxySQL的admin管理接口是一个使用MySQL协议的接口,这使得客户端可以非常方便地通过发送一些命令去修改ProxySQL的配置。ProxySQL会解析通过该接口发送的某些对ProxySQL有效的特定命令,并将其合理转换后发送给内嵌的SQLite3数据库引擎去运行。
请注意,SQLite3和MySQL使用的SQL语法有所不同,因此能在MySQL上正常运行的命令不一定能在SQLite3上运行。例如,尽管admin管理接口接收USE命令,但不会切换默认的schema,因为SQLite3不支持USE功能。
当连接到ProxySQL的admin管理接口时,我们可以看到已经有一些数据库存在。ProxySQL会将SHOW DATABASES命令转换为SQLite3上等价的命令。
mysql> show databases;
+-----+---------+------------------+
| seq | name | file |
+-----+---------+------------------+
| 0 | main | |
| 2 | disk | /tmp/proxysql.db |
| 3 | stats | |
| 4 | monitor | |
| 5 | myhgm | |
+-----+---------+------------------+
5 rows in set (0.00 sec)
这些schema的作用如下:
- main:内存数据库。通过该数据库,可以方便地以自动化方式去查询、更新ProxySQL的配置。使用
LOAD MYSQL USERS FROM MEMORY
以及那些类似的命令,可以将内存数据库中对应的配置加载到runtime数据结构中,从而使配置生效。 - disk:磁盘上的数据库,是内存数据库
main
的镜像库。重启ProxySQL时,main
中的配置会丢失,所以会从磁盘数据库或配置文件中加载配置,至于是从磁盘数据库加载配置还是从配置文件中加载配置,取决于是否是第一次启动(或者"--initial"指定为初始化)以及磁盘数据库是否已存在。如果已存在,或者非第一次启动,则会从磁盘数据库中加载配置,否则从配置文件中读取配置对ProxySQL进行初始化。详细内容参见https://github.com/malongshuai/proxysql/wiki/Configuring-ProxySQL - stats:ProxySQL内部功能收集的一些runtime指标。例如,每个查询规则被匹配了多少次,当前正在执行的查询,等等。
- monitor:包含ProxySQL所连接的后端相关监控指标。例如,连接到后端或ping后端所花的最长、最短时间。
- myhgm:只在debug版本才有的库。
此外,能访问admin管理接口的用户有两类,它们的默认凭据为:
-
user:password
=admin:admin -- 对库中的所有表都有读、写权限。 -
user:password
=stats:stats -- 只对统计数据表有只读权限。这些用户是用来从ProxySQL获取一些指标的,不会暴露太多的数据库给它们。
上述两类凭据分别通过变量admin-admin_credentials
和admin-stats_credentials
进行配置。
网友评论