是时候聊一聊ProxySQL功能测试了( 二 )
这里的SQL是完整的包含参数SQL语句 , 而非参数化后的语句 , 如果SQL语句进行了重写 , 则使用重写后的完整的SQL语句参与hash运算 , 即相同digest的语句只要参数不相同 , 会分别缓存
根据查询用户全部进行缓存
只要是test用户的查询语句都会进入缓存 , hostgroup值为-1
根据数据库进行缓存
只对A数据库的查询进行缓存
根据查询规则进行缓存
前后对比
始终不缓存
根据id的值不同 , 第一次不缓存 , 第二次缓存
文章图片
2.4异常情况
proxysql的另一个重要功能 , 即在发生故障转移时 , 为客户端提供同一的入口 。 本节讨论mysql服务节点异常和网络异常情况下 , proxysql对于读写流量的处理结果 。
本实验的MGR结构为单主模式 , 一台写组+两台读组
文章图片
2.4.1节点异常
写服务down
1))停掉XX.XXX.XX.3上的mysql进程
文章图片
MGR自动推举出新的primaryserver , 并将此服务的read_only变量设置为NO , ProxySQL通过监控自动监测并更新服务信息
2)把挂掉的机器拉起来 , 开启组复制 , 它作为读节点重新加入
文章图片
读写请求都正常转发至唯一写组
一读一写服务down
剩下的一个读节点提升为写节点 , 同样写读请求可以正常转发 。
2.4.2网络异常
Proxysql参数说明:
监视mysql后端状况
:代理的Monitor模块尝试连接到所有MySQL服务器以检查它们是否可用的时间间隔 。 默认600ms.
:连接超时时间 , 默认2000ms ,
Proxysql监视组复制参数:
:监控组复制成员是否健康的阈值时间,默认800ms
:监视组复制状态的心跳间隔 , 如果成员状态不可得 , 则被暂时置为shunned(由mysql_galera_hostgroups.max_transactions_behind列控制) , 默认1000ms
:设置ProxySQL在脱机之前在组复制节点上进行超时检查的最大次数 。 默认3次
Mysql参数说明
:
注意:mysql5.7默认成员被驱逐的时间限制是5s
Mysql8.0可以设置group_replication_member_expel_timeout=N , 说明在5s没有响应之后 , 再等待Ns后驱逐
模拟网络延迟方法
注意不要超过10s , 否则ssh也连不上了
sudotcqdiscadddeveth0rootnetemdelay10s
恢复
sudotcqdiscdeldeveth0root
2.4.1读组延迟
参数1:网络延迟0.5s , 但是还没达到被shunned(ProxySQL)的时限(1s)
文章图片
表现:可以正常读写 , 但是出现了读写都出现了延迟 , 观察max_time(1秒=1000毫秒=1000000微秒 , 输出结果为微秒)
原因:此时mgr和proxysql都认为机器状况正常 , 所以正常地分别转发到两个读组 。
文章图片
参数2:网络延迟1s , 达到被shunned的时限(800ms)
文章图片
查看延迟情况:可以正常读写 , 但是insert语句耗费时间比较长 , select语句时间正常 。
原因:因为mgr并没有断掉 , 所有mgr机制要求全部的成员都插入了数据 , 才能够返回 。 而select语句全部被转发到不延迟的读组 。
参数3:网络延迟6s , 节点被驱逐出mgr
观察proxysql日志:
MySQL_Monitor.cpp:1543:monitor_group_replication_thread():[WARNING]XX.XXX.XX.5:3306:groupreplicationhealthchecktimeoutcount3.Maxthreshold3.
- 小米科技|不聊性能只谈拍照!新旗舰反向升级成潮流,拍照手机如何选?
- 加盟行业|原来加盟行业是这么玩的!
- m都是大片!微软 Skype 支持将必应 Bing 图片设为通话虚拟背景
- 儿童教育|首个播放量破 100 亿的 YouTube 视频诞生,竟然是儿歌
- 苹果|苹果最巅峰产品就是8,之后的产品,多少都有出现问题
- 东南亚|MIUI13深度使用报告,这还是我认识的MIUI吗?网友评价很真实
- |互联网运营是什么?快来看看你是哪种类型的运营
- 苹果|马化腾称,腾讯只是一家普通公司,这是谦虚说法还是有所顾虑?
- 他是“中国氢弹之父”,他的名字曾绝密28年,他叫于敏
- 百度|马化腾的一句话,腾讯市值一小时暴涨1400亿港币,马云格局还是小了