zoukankan      html  css  js  c++  java
  • MySQL中间件之ProxySQL(2):Admin管理接口

    一、ProxySQL的Admin管理接口

    当Proxysql启动后,将监听两个端口:

    • admin管理接口,默认端口为6032。该端口用于查看、配置ProxySQL。
    • 接收SQL语句的接口,默认端口为6033,这个接口类似于MySQL的3306端口。

    image

    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 2
    Server 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> '
    

    所有的配置操作都是在修改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:stats;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_global                   |
    | 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 关注我,不走丢!

  • 相关阅读:
    ASP.NET MVC5中的Model验证
    MVC方式显示数据(数据库)
    MVC方式显示数据(手动添加数据)
    EF数据Linq方式查询
    c# MVC方式文件上传
    调用BAPI创建病患主数据时的问题汇总[BAPI_PATIENT_CREATE]
    [代码]如何上载图片到SAP数据库并显示
    [代码]读取物料BOM行项目长文本[READ_TEXT]
    [问题解决]更新订单BOM中的Qty Var-Sz Item字段失败
    [代码]如何在ALV头中显示Logo图片-[REUSE_ALV_GRID_DISPLAY]
  • 原文地址:https://www.cnblogs.com/easydb/p/13811201.html
Copyright © 2011-2022 走看看