####安装

####启动

  • Service proxysql start

####配置文件

  • 文本配置文件
    • ProxyQSL使用一个配置文件的(/etc/proxysql.cnf),但是这个配置文件只在第一次启动时使用,一般不需要修改
  • SQLite配置文件
    • ProxySQL在第一次启动后就会使用SQLite文件(/var/lib/proxysql/proxysql.db)来加载和持久化配置项,并且这种配置方式支持在线修改

####登录

  • ProxySQL默认的管理端口是6032
  • ProxySQL默认的服务端口是6033
  • ProxySQL默认的用户名和密码都是admin

####库结构

  • 登录到管理端口,使用show databases;

    img

    在管理端口中有4个库,分别是:

    Admin:默认数据库,存放服务器、用户、路由等的配置信息。以”runtime_“开头的表是当前运行中的配置,不能直接修改。通过修改没有前缀的表,使用”LOAD“加载配置,使用”SAVE“持久化配置。

    Disk:存储配置的SQLite数据库

    Stats:各种命令的统计信息

    Monitor:对于后端数据库的监控信息

####配置表

  • 各种配置所使用到的表都在main库中

    mysql> show tables from main;

    +——————————————–+

    | tables |

    +——————————————–+

    | global_variables |全局变量,,具体可见https://github.com/sysown/proxysql/wiki/Global-variables

    | mysql_collations |字符集相关

    | mysql_group_replication_hostgroups |MySQL Group Replication信息

    | mysql_query_rules |路由规则信息

    | mysql_replication_hostgroups |定义hostgroup的主从信息

    | mysql_servers |后端MySQL节点

    | mysql_users |用户配置

    | proxysql_servers |

    | runtime_global_variables |

    | runtime_mysql_group_replication_hostgroups |

    | runtime_mysql_query_rules |

    | runtime_mysql_replication_hostgroups |

    | runtime_mysql_servers |

    | runtime_mysql_users |

    | runtime_proxysql_servers |

    | runtime_scheduler |

    | scheduler |定时器

    +——————————————–+

    17 rows in set (0.00 sec)

  • 数据库节点设置(mysql_servers)

    • 这张表主要配置hostgroup的相关信息。路由时会根据设置的规则将相关SQL路由到指定的hostgroup。而在同一hostgroup中又根据权重分发SQL语句。
  • 用户设置(mysql_users)

    • 配置客户端连接proxysql(frontend)和proxysql连接数据库(backend)的用户。目前这两个值都默认为1。以后可能会分开。
  • 主从关系设置(mysql_replication_hostgroups)

    • 根据read_only值来判断主从。可以不配置。
  • 路由规则设置(mysql_query_rules)

    • Proxysql会根据主键rule_id的顺序加载路由规则。

    • Username/client_addr/schemaname:只有用户、地址和schema匹配时规则才会生效。

    • Proxysql会先检查flagIN=0的规则

    • 如果规则匹配,且flagIN=flagOUT或者flagOUT=NULL或者apply=1,则应用这条规则

    • 否则,根据flagOUT的值,去匹配下一条flagIN等于该值的规则

    • Digest/match_digest/match_pattern:这三个值都是用来匹配查询的。

      Digest匹配的值类似于stats_mysql_query_digest表中的digest列

      img

      Match_digest匹配的值类似于stats_mysql_query_digest中的digest_text列

      img

      Match_pattern匹配的是未经修改过的SQL语句

    • Negate_match_pattern:对match_digest/match_pattern的匹配值取反

    • 重写SQL:重写SQL最好使用match_pattern作为匹配项,使用replace_pattern作为重写后的SQL,二者都遵循正则表达式