使用amoeba实现mysql读写分离
时间:2022-03-13 22:35
使用amoeba实现mysql读写分离
amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便
amoeba使用java所研发,但是amoeba不支持分布式事物(据说现在最新版本已经支持事物),如果用到分布式事物的话不建议使用amoeba。
mysql-proxy支持分布式事物 但需要自己开发样本,如果必须支持事物的话,必须将其大事物切割成小事物并且都在单机上完成,不建议用分布式,那么amoeba就可以发挥作用了,此外amoeba还提供了监控机制,可以监听后端数据库是否存活
Amoeba主要解决以下问题:
·数据切分后复杂数据源整合
·提供数据切分规则并降低数据切分规则给数据库带来的影响
·降低数据库与连接
·路由
原理就不再进行描述了,我们直接来部署amoeba
规划
首先mysql一主一从都工作在内网中,面向用户的只有amoeba节点,amoeba需要监听在3306端口,以模拟mysql的方式监听用户的请求
<poolConfigclass="com.meidusa.amoeba.server.MultipleServerPool"> |
<poolConfigclass="com.meidusa.amoeba.server.MultipleServerPool"> <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED ,3=HA--> <property name="loadbalance">1</property>
<!-- Separated by commas,such as: server1,server2,server1 --> <propertyname="poolNames">node2,node2,node1</property> </poolConfig> </dbServer> 保存退出,使amodeba调用池,因此还需编辑amoeaba.xml <property name="writePool">node1</property> <property name="readPool">ReadPool</property> 进入数据库执行select语句并再次抓包查看 mysql> select * from tb1; +------+ | NAME | +------+ | test | | tom | +------+ 2 rows in set (0.01 sec) 可看到主库没有回显任何信息,在从库显示抓包信息如下: 14:53:10.169782 IP 10.12.33.59.34299 >10.12.33.57.3306: Flags [P.], seq 473:495, ack 3700, win 455, options[nop,nop,TS val 523743485 ecr 361824589], length 22 E..J..@.@.(/ .!; .!9....Q,.{B/.......w..... .7.....M.....select * from tb1 14:53:10.171609 IP 10.12.33.57.55409 >10.12.33.59.3306: Flags [P.], seq 77:99, ack 235, win 115, options [nop,nop,TSval 361830482 ecr 523737591], length 22 E..JZ.@.@..u .!9 .!;.q....+[.YW....s....... ...R.7.......select * from tb1 14:53:10.172382 IP 10.12.33.57.55409 >10.12.33.59.3306: Flags [.], ack 320, win 115, options [nop,nop,TS val 361830483ecr 523743487], length 0 E..4Z.@.@... .!9 .!;.q....+q.YX=...sF?..... ...S.7.. 14:53:10.174525 IP 10.12.33.59.34299 >10.12.33.57.3306: Flags [.], ack 3785, win 455, options [nop,nop,TS val523743490 ecr 361830485], length 0 E..4..@.@.(D .!; .!9....Q,..B/.R....F&..... .7.....U
以上,读写分离配置大致完成,感谢各位
本文出自 “” 博客,转载请与作者联系! 使用amoeba实现mysql读写分离,布布扣,bubuko.com 相关推荐
电脑软件热门排行今日推荐热门手游 |