返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html
会操作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/ ,如需转载,请注明出处,否则将追究法律责任。