是时候聊一聊ProxySQL功能测试了
作者|林雅婷
编辑|冬梅
ProxySQL是MySQL的高性能、高可用性、协议感知代理 。 支持包括读写分离、故障转换、query的过滤和路由等功能 。 本文将从Proxysql的基本功能测试、异常情况测试来聊聊ProxySQL功能 。
1.背景
ProxySQL能为数据库的高可用和拓展提供以下两点服务:
故障转移 。 当主节点发生故障时 , MGR通过选举提升另一节点为主节点 。 亟需前端代理为客户端提供统一的入口 , 避免连接失败 。
读写分离 。 将读写请求分流至不同的数据库后端 , 灵活应对各种读写场景 。
本文实验采用ProxySQL+MySQL+MGR的架构 。 包括两台ProxySQL服务及三台MySQL服务
操作系统:DebianGNU/Linux10(buster)
Proxysql版本:2.1.1
MySQL版本:5.7.29
2.基本功能
2.1配置原理
ProxySQL支持动态配置 , 因此首先了解一下它的三层配置架构runtime、memory、disk/config 。
第一层是runtime , 即运行时配置 , 用户无法直接操作更改 , 必须从memory中加载 。
第二层是memory , 用户通过此界面查看/编辑ProxySQL配置表 。
第三层是disk/config , 用于持久化memory中的配置 。
2.2ProxySQL基本配置
以下表只截取重要的几个表字段说明 , 完整的表结构请参照https://proxysql.com/documentation/main-runtime/
用户表mysql_users
注:用户表并不实现host/ip限制 , 在规则表中实现
2.群组表mysql_group_replication_hostgroups
3.服务表mysql_server
在编辑配置表后 , LOADXXXTORUNTIME来加载到运行时 , SAVEXXXTODISK来持久化到磁盘
注:Mysql的组复制搭建及配置此处不再赘述 , 可参照https://dev.mysql.com/doc/refman/5.7/en/group-replication.html
2.3转发规则
代理转发是ProxySQL重要功能 , 实现了根据用户、IP、数据库、规则转发功能 。
规则表mysql_query_rules:
文章图片
命中规则状态查看表
下面讨论几种转发方式(以下query都为自动提交 , 不显式开启事务):
2.3.1根据用户转发
当不配置任何规则时 , 根据用户表的default_hostgroup , default_schema配置转发至对应组和数据库
2.3.2根据访问ip转发
根据访问ip转发 , 可实现ip白名单限制
设置一条白名单(注意rule_id最小 , 并且apply设置为0)
设置其他转发规则 , 且flagIN承接白名单的flagOUT
插入一条禁止其他所有ip访问的黑名单(rule_id设置为max(rule_id) , 并且apply=1)
查询效果
1、命中白名单
2.命中黑名单
文章图片
缺陷:只支持ip , 不支持域名
2.3.3根据数据库转发
插入两条规则(mysql_user中只设置default_hostgroup , 不设置default_schema)
分别测试了SQL
总结:不符合预期
不利用usedatabases并且不命中其他规则 , 默认转发到用户default_hostgroup
Usedatabase , 不论后面跟什么 , 都以规则中设置的destination_hostgroup为准
2.3.4根据规则转发
有效的规则设置可以帮助实现读写分离
说明:在mysql_query_rules中的match_digest/match_pattern字段设置正则匹配规则 , 优先匹配match_pattern
插入两条匹配规则:
sql执行效果
2.3.5根据耗时语句重写规则
proxysql的语句重写是规则转发的一重要特性 。 proxysql对query进行指纹化处理后 , 统计查询耗时 。
用户通过统计信息可以重新分配查询路由或者重写query
查看统计信息
可以看到第二条查询语句耗时较长 , 将其特殊转发至其他组
再次观察 , 此query被转发至群组3
2.3.6查询缓存
说明:每个查询缓存记录的key是根据username+schemaname+SQL做hash运算出来的
- 小米科技|不聊性能只谈拍照!新旗舰反向升级成潮流,拍照手机如何选?
- 加盟行业|原来加盟行业是这么玩的!
- m都是大片!微软 Skype 支持将必应 Bing 图片设为通话虚拟背景
- 儿童教育|首个播放量破 100 亿的 YouTube 视频诞生,竟然是儿歌
- 苹果|苹果最巅峰产品就是8,之后的产品,多少都有出现问题
- 东南亚|MIUI13深度使用报告,这还是我认识的MIUI吗?网友评价很真实
- |互联网运营是什么?快来看看你是哪种类型的运营
- 苹果|马化腾称,腾讯只是一家普通公司,这是谦虚说法还是有所顾虑?
- 他是“中国氢弹之父”,他的名字曾绝密28年,他叫于敏
- 百度|马化腾的一句话,腾讯市值一小时暴涨1400亿港币,马云格局还是小了