AI智能
改变未来

MySQL中间件之ProxySQL(2):Admin管理接口


一、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

关注我,不走丢!

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » MySQL中间件之ProxySQL(2):Admin管理接口