您的位置:首页 > 博客中心 > 数据库 >

使用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">
                       <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->

               <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

热门排行

今日推荐

热门手游