14.ProxySQL中间件01

发布时间 2023-04-08 22:47:23作者: 站在巨人的肩上Z

     Proxysql是基于mysql的一款开源的中间件的产品,是一个灵活的Mysql代理层,可以实现读写分离,支持Query路由功能,支持动态指定某个sql进行缓存,支持动态加载配置信息(无须重启proxysql服务),支持故障切换和sql的过滤功能。

相关的网站:    https://www.proxysql.com/         https://github.com/sysown/proxysql/wiki

安装:可以直接去github上面下载rpm包安装

启动|关闭 proxysql程序: systemctl start|status|stop proxysql

1.ProxySql的admin管理接口

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

  1)admin管理接口,默认端口是6032.该端口用于查看、查看proxysql

  2) 接受sql语句的接口,默认端口未6033,这个接口类似于mysql的3306端口

默认的工作结构如下:

2.proxysql登录

  proxysql管理接口默认使用admin管用用户的,只允许本地登录(如下),proxysql的配置几乎都保存在自带的的库中。

[root@mysql03 src]# mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt='Aadmin>'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.30 (ProxySQL Admin Module)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Aadmin>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.00 sec)

Aadmin>

3.Proxysql中管理结构自带的系统库

  在proxysql,6032端口主要管理以下五个库:main、disk、stats、monitor、stats_history

      1)main: main库中重要的表有如下:

       mysql_servers:后端可以连接mysql服务器的列表

       mysql_users:配置后端数据库的账号和监控账号

     mysql_query_rules:指定query路由到后端不同服务器的规则列表

           注意:表名以runtime_开头的表示Proxysql当前运行的配置内存,不能直接改,不带runtime是可以进行修改的

  2) disk:这个库里面都持久化磁盘的配置

  3) stats:统计信息的汇总

  4) stats_history: Proxysql收集的有关其内部功能的历史指标

4.Proxysql管理接口的多层配置关系

   

       整套系统主要分为三层:

        顶层: runtime    中间层: memory (主要修改的配置表)  持久层: disk和cfg file

    runtime: 代表Proxysql 当前正在使用的配置,无法直接修改此配置,必须要从下一层(mem层)"load"进来,

        memory:memory层上面连接runtime层,下面连接持久层,这层可以在线操作proxysql配置,随便修改,不会影响生产环境,确认正常之后再加载到runtime和持久磁盘上。

    disk和config file:  持久化配置信息。重启时,可以重磁盘快速加载回来。

5.在不同层次间移动配置

   为了将配置持久化到磁盘或者应用到runtime,在管理接口下有一系列管理命令来实现它们。

   1)user 相关

   1.1 MEM加载到runtime  --> load mysql users to runtime;

   1.2 runtime保存至MEM --> save mysql users to memory;

       1.3 disk加载到mem   --> load mysql users from disk;

       1.4 mem到disk  --> save mysql users to disk;

       1.5 cfg 到mem  --> load mysql users form cfg

  2)  server 相关配置

   2.1 MEM加载到runtime  --> load mysql servers to runtime;

   2.2 runtime保存至MEM --> save mysql servers to memory;

       2.3 disk加载到mem   --> load mysql servers from disk;

       2.4 mem到disk  --> save mysql servers to disk;

       2.5 cfg 到mem  --> load mysql servers form cfg

  3) mysql query rules 配置 

   3.1 MEM加载到runtime  --> load mysql query rules to runtime;

   3.2 runtime保存至MEM --> save mysql query rules to memory;

       3.3 disk加载到mem   --> load mysql query rules from disk;

       3.4 mem到disk  --> save mysql query rules to disk;

       3.5 cfg 到mem  --> load mysql query rules form cfg

4) mysql variables配置

   4.1 MEM加载到runtime  --> load mysql variables  to runtime;

   4.2 runtime保存至MEM --> save mysql variables  to memory;

       4.3 disk加载到mem   --> load mysql variables  from disk;

       4.4 mem到disk  --> save mysql variables to disk;

       4.5 cfg 到mem  --> load mysql  variables form cfg

  

总结: 日常配置其实大部分在MEM配置中,然后load到runtime,然后save到disk,cfg很少使用。

例如:load xxx to runtime;  save xxx to disk;

注意: 只有load到runtime状态时才会验证配置,在保存mem到disk时,都不会发生任何警告或错误。当load到runtime时,如果出现错误,将恢复为之前报错的状态,这时可以去检查错误日志。