一、ProxySQL的Admin管理接口
当Proxysql启动后,将监听两个端口:
- admin管理接口,默认端口为6032。该端口用于查看、配置ProxySQL。
- 接收SQL语句的接口,默认端口为6033,这个接口类似于MySQL的3306端口。
ProxySQL的admin管理接口是一个使用MySQL协议的接口,所以,可以直接使用mysql客户端、navicat等工具去连接这个管理接口。
通过管理界面配置ProxySQL
例如:使用mysql客户端,并使用以下admin凭据在本地端口(6032)上进行连接。默认账号密码
admin:admin
[root@mysql8 ~]# mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt=\'Admin> \'Welcome to the MariaDB monitor. Commands end with ; or \\g.Your MySQL connection id is 2Server version: 5.5.30 (ProxySQL Admin Module)Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type \'help;\' or \'\\h\' for help. Type \'\\c\' to clear the current input statement.Admin>
Admin> show databases;+-----+---------------+-------------------------------------+| seq | name | file |+-----+---------------+-------------------------------------+| 0 | main | || 2 | disk | /var/lib/proxysql/proxysql.db || 3 | stats | || 4 | monitor | || 5 | stats_history | /var/lib/proxysql/proxysql_stats.db |+-----+---------------+-------------------------------------+5 rows in set (0.000 sec)
这些库的含义:
- main:内存配置数据库。使用此数据库,可以很容易地以自动化方式查询和更新ProxySQL的配置。使用从内存中加载MYSQL用户和类似命令,可以将存储在此处的配置传播到运行时ProxySQL使用的内存数据结构。
- disk:“ main”的基于磁盘的镜像。在重新启动过程中,“ main”不会保留,而是根据启动标志以及磁盘上是否存在数据库从“磁盘”数据库或从配置文件加载。
- stats:包含从代理的内部功能收集的运行时指标。指标示例包括每个查询规则匹配的次数,当前正在运行的查询等。
- monitor:包含与ProxySQL连接的后端服务器相关的监视指标。度量标准示例包括连接到后端服务器或对其进行ping操作的最小和最大时间。
二、和admin管理接口相关的变量
一般来说,admin接口基本不需要额外的配置,最有可能配置的是admin接口的管理员用户名、密码。
2.1 admin-admin_credentials
该变量控制的是admin管理接口的管理员账户。默认的管理员账户和密码为admin:admin,但是这个默认的用户只能在本地使用。如果想要远程连接到ProxySQL,例如用windows上的navicat连接Linux上的ProxySQL管理接口,必须自定义一个管理员账户。
例如:添加一个
myuser:myuser
的用户和密码
Admin> select @@admin-admin_credentials;+---------------------------+| @@admin-admin_credentials |+---------------------------+| admin:admin |+---------------------------+1 row in set (0.001 sec)Admin> set admin-admin_credentials=\'admin:admin;myuser:myuser\';Query OK, 1 row affected (0.000 sec)Admin> select @@admin-admin_credentials;+---------------------------+| @@admin-admin_credentials |+---------------------------+| admin:admin;myuser:myuser |+---------------------------+1 row in set (0.001 sec)Admin> load admin variables to runtime; # 使修改立即生效Query OK, 0 rows affected (0.000 sec)Admin> save admin variables to disk; # 使修改永久保存到磁盘Query OK, 35 rows affected (0.004 sec)
修改后,我们就可以在其它主机使用改用户名和密码连接管理接口了。
mysql -umyuser -pmyuser -h 127.0.0.1 -P6032 --prompt=\'myuser> \'
56c所有的配置操作都是在修改main库中对应的表。
myuser> select * from global_variables where variable_name=\'admin-admin_credentials\';+-------------------------+---------------------------+| variable_name | variable_value |+-------------------------+---------------------------+| admin-admin_credentials | admin:admin;myuser:myuser |+-------------------------+---------------------------+1 row in set (0.001 sec)
所以,前面的
set
语句和下面的
update
语句是等价的:
myuser> update global_variables set variable_value=\'admin:admin;myuser:myuser\' where variable_name=\'admin-admin_credentials\';
2.2 admin-stats_credentials
该变量控制admin管理接口的普通用户,这个变量中的用户没有超级管理员权限,只能查看monitor库和main库中关于统计的数据,其它库都是不可见的,且没有任何写权限。
默认的普通用户名和密码为
stats:stats
。
myuser> select @@admin-stats_credentials;+---------------------------+| @@admin-stats_credentials |+---------------------------+| stats:stats |+---------------------------+1 row in set (0.001 sec)myuser> set admin-stats_credentials=\'stats:sta56cts;mystats:mystats\';Query OK, 1 row affected (0.000 sec)myuser> select @@admin-stats_credentials;+-----------------------------+| @@admin-stats_credentials |+-----------------------------+| stats:stats;mystats:mystats |+-----------------------------+1 row in set (0.001 sec)
[root@mysql8 ~]# mysql -ustats -pstats -P6032 -h127.0.0.1 --prompt \'mystats> \'mystats> show databases;+-----+---------------+-------------------------------------+| seq | name | file |+-----+---------------+-------------------------------------+| 0 | main | || 2 | monitor | || 3 | stats_history | /var/lib/proxysql/proxysql_stats.db |+-----+---------------+-------------------------------------+3 rows in set (0.000 sec)mystats> show tables;+--------------------------------------+| tables |+--------------------------------------+| global_variables || stats_memory_metrics || stats_mysql_commands_counters || stats_mysql_connection_pool || stats_mysql_connection_pool_reset || stats_mysql_errors || stats_mysql_errors_reset || stats_mysql_free_connections || stats_mysql_globalad8|| stats_mysql_gtid_executed || stats_mysql_prepared_statements_info || stats_mysql_processlist || stats_mysql_query_digest || stats_mysql_query_digest_reset || stats_mysql_query_rules || stats_mysql_users || stats_proxysql_servers_checksums || stats_proxysql_servers_metrics || stats_proxysql_servers_status |+--------------------------------------+19 rows in set (0.001 sec)
2.3 admin-mysql_ifaces
该变量指定admin接口的监听地址,格式为分号分隔的hostname:port列表。默认监听在0.0.0.0:6032。
注意,允许使用UNIX的domain socket进行监听,这样本主机内的应用程序就可以直接被处理。
例如:
SET admin-mysql_ifaces=\'127.0.0.1:6032;/tmp/proxysql_admin.sock\'
从配置文件重新初始化ProxySQL(首次启动后,将使用DB文件而不是配置文件):
systemctl start proxysql-initial.service
配置ProxySQL的最佳方法是通过其管理界面。通过SQL查询对其管理数据库进行联机配置(无需重新启动代理)。这是手动和自动配置它的有效方法。配置文件,作为配置它的辅助方法。
ProxySQL管理界面是使用MySQL协议的界面,任何能够通过该界面发送命令的客户端都可以轻松配置它。ProxySQL解析通过此接口发送的查询,以查询特定于ProxySQL的任何命令,并在适当的情况下将它们发送到嵌入式SQLite3引擎以运行查询。
请注意,SQLite3和MySQL使用的SQL语法不同,因此,并非所有在MySQL上运行的命令都可以在SQLite3上运行。例如,尽管USE命令已被管理界面接受,但它不会更改默认架构,因为此功能在SQLite3中不可用。
连接到ProxySQL管理界面时,我们可以看到有一些数据库可用。ProxySQL将SHOW DATABASES命令转换为SQLite3的等效命令。
因为有悔,所以披星戴月;因为有梦,所以奋不顾身! 个人博客首发:
easydb.net
微信公众号:
easydb
关注我,不走丢!