love wife & love life —Roger的Oracle&MySQL技术博客

Phone:18180207355 提供专业Oracle&MySQL数据恢复、性能优化、迁移升级、紧急救援等服务

MySQL Group Replication+ProxySQL进行读写分离测试

本站文章除注明转载外,均为本站原创: 转载自love wife & love life —Roger的Oracle&MySQL技术博客

本文链接地址: MySQL Group Replication+ProxySQL进行读写分离测试

目前主流的中间件有很多,比如Mycat、altas、dbproxy、oneproxy。但是都有不少的问题。我司产品
采用的是基于ProxySQL的模式;因此这里我对proxysql进行一次简单测试。如下是简单安装配置和测试过程,供参考:

1. 增加基于proxysql的yum源repo文件

2. yum安装proxysql

3. proxysql安装配置完成后默认配置文件在/etc/proxysql.cnf

4. 安装完毕后可用通过如下方式来验证proxysql安装是否ok

关于默认的用户和密码信息,以及端口等内容,均可直接查看/etc/proxysql.cnf配置文件.

5. 创建相关监控和测试账户

6.配置db列表(10为write节点,20表示备写,30是read节点,40表示offline)

7. 将持久化到配置文件中,并load到内存

操作完毕后,我们看看此时的情况:

7. 下面通过sysbench来压测对比一下,看看加了一层ProxySQL,是否有较大的性能影响

可以看上去,proxysql的效果还不错,损耗是比较低的。在压测过程中发现我这个虚拟机(只有1个cpu)
的cpu基本上要被耗尽,其中proxysql消耗了近80%的cpu。

主要在消耗在e1000_xmit_frame 调用上,这是Linux os调用网卡的操作函数,这也跟前面nmon的监控比较符合;ContextSwitch 是很高的。

由此可见,对于mgr+proxysql的架构;Proxysql 所在节点的机器配置也不能过低,否则还是会有所影响的。

那么能否通过proxysql来让应用对mgr节点的切换无感知呢?当节点切换后,自动连接mgr,无需修改配置。

首先在mgr节点执行相关脚本,创建响应的函数来实现这个功能,这里我直接使用了老外的脚本。链接地址:https://github.com/lefred/mysql_gr_routing_check/blob/master/addition_to_sys.sql

 

–配置scheduler

这里网直接使用了网友的脚本 https://github.com/ZzzCrazyPig/proxysql_groupreplication_checker/gr_sw_mode_checker.sh

将脚本放在目录/var/lib/proxysql/即可;然后在scheduler中插入记录。

—我们来看下目前节点的情况

目前132是写节点,我们现在将132节点停掉.

再次解析域名看看write节点是否转移。

可以看到write节点转移到了133. 检查此时proxysql的配置,其实并没有改变:

仍然显示132是write节点,133,154是read 节点。

这里其实不影响,此时check脚本运行正常。如下是日志:

下面来测试一下,是否仍然可以进行正常的操作:

可见此时对于应用来说几乎是无感知的。祝大家玩得开心!

Leave a Reply

You must be logged in to post a comment.