ITPub博客

首页 > IT职业 > IT生活 > MySQL中间件之ProxySQL(7):详述ProxySQL的路由规

MySQL中间件之ProxySQL(7):详述ProxySQL的路由规

IT生活 作者:bacer 时间:2021-09-09 09:32:30 0 删除 编辑

返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html

 

ProxySQL的多层配置系统

  • 会操作ProxySQL的Admin管理接口,可参考:ProxySQL的Admin管理接口

  • 已经配置好了后端节点、mysql_users等。可参考:ProxySQL管理后端节点

  • 如果想速成,可参考;ProxySQL初试读写分离

    本文涉及到的实验环境如下:

    角色 主机IP server_id 数据状态
    Proxysql 192.168.100.21 null 无
    Master 192.168.100.22 110 刚安装的全新MySQL实例
    Slave1 192.168.100.23 120 刚安装的全新MySQL实例
    Slave2 192.168.100.24 130 刚安装的全新MySQL实例

    该实验环境已经在前面的文章中搭建好,本文不再赘述一大堆的内容。环境的搭建请参考前面给出的1、2、3。

    通过MySQL Router实现MySQL读写分离的文章,MySQL Router实现读写分离的方式就是通过监听不同端口实现的:一个端口负责读操作,一个端口负责写操作。这样的路由逻辑非常简单,配置起来也很方便。

    虽然基于端口实现读写分离配置起来非常简单,但是缺点也很明显:必须在前端app的代码中指定端口号码。这意味着MySQL的一部分流量权限被开发人员掌控了,换句话说,DBA无法全局控制MySQL的流量。此外,修改端口号时,app的代码也必须做出相应的修改。

    虽说有缺点,但为了我这个ProxySQL系列文章的完整性,本文还是要简单演示ProxySQL如何基于端口实现读写分离。

    首先修改ProxySQL监听SQL流量的端口号,让其监听在不同端口上。

    admin> set mysql-interfaces='0.0.0.0:6033;0.0.0.0:6034';
    admin> save mysql variables to disk;

    然后重启ProxySQL。

    [root@xuexi ~]# service proxysql stop[root@xuexi ~]# service proxysql start[root@xuexi ~]# netstat -tnlp | grep proxysqltcp  0  0 0.0.0.0:6032  0.0.0.0:*   LISTEN  27572/proxysql
    tcp  0  0 0.0.0.0:6033  0.0.0.0:*   LISTEN  27572/proxysql
    tcp  0  0 0.0.0.0:6034  0.0.0.0:*   LISTEN  27572/proxysql

    监听到不同端口,再去修改mysql_query_rules表。这个表是ProxySQL的路由规则定制表,后文会非常详细地解释该表。

    例如,插入两条规则,分别监听在6033端口和6034端口,6033端口对应的hostgroup_id=10是负责写的组,6034对应的hostgroup_id=20是负责读的组。

    insert into mysql_query_rules(rule_id,active,proxy_port,destination_hostgroup,apply) 
    values(1,1,6033,10,1), (2,1,6034,20,1);load mysql query rules to runtime;
    save msyql query rules to disk;

    这样就配置结束了,是否很简单?

    其实除了基于端口进行分离,还可以基于监听地址(修改字段proxy_addr即可),甚至可以基于客户端地址(修改字段client_addr字段即可,该用法可用于采集数据、数据分析等)。

    无论哪种路由方式,其实都是在修改mysql_query_rules表,所以下面先解释下这个表。

    mirroring相关的设置,目前mirroring正处于实验阶段,所以不解释。

  • error_msg:查询将被阻塞,然后向客户端返回error_msg指定的信息。

  • sticky_conn:当前还未实现该功能。

  • multiplex:如果设置为0,将禁用multiplexing。如果设置为1,则启用或重新启用multiplexing,除非有其它条件(如用户变量或事务)阻止启用。如果设置为2,则只对当前查询不禁用multiplexing。默认值为NULL,表示不会修改multiplexing的策略。

  • log:查询将记录日志。

  • apply:当设置为1后,当匹配到该规则后,将立即应用该规则,不会再评估其它的规则(注意:应用之后,将不会评估mysql_query_rules_fast_routing中的规则)。

  • comment:注释说明字段,例如描述规则的意义。

  • ProxySQL的stats库。本文介绍其中3个和路由、规则相关的表。

    https://www.cnblogs.com/f-ck-need-u/p/9300829.html


    来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2768/viewspace-2804495/ ,如需转载,请注明出处,否则将追究法律责任。

    请登录后发表评论 登录
    全部评论

    注册时间:2019-04-17

    • 博文量
      87
    • 访问量
      7058