如何用 Amoeba 进行mysql数据库读写分离

amoeba主要是针对数据切分方面、读写分离、负载均衡、故障恢复。

首先说明一下amoeba 跟 mysql proxy在读写分离的使用上面的区别。
在 mysql proxy 上面如果想要读写分离并且 读集群、写集群 机器比较多情况下,用mysql proxy 需要相当大的工作量,目前mysql proxy没有现成的 lua脚本。mysql proxy根本没有配置文件,lua脚本就是它的全部,当然lua是相当方便的。那么同样这种东西需要编写大量的脚本才能完成一个复杂的配置。amoeba目标是走产品化这条路。只需要进行相关的配置就可以满足需求。

一、Master/Slave 结构读写分离
Master: server1 (可读写)
slaves:server2、server3、server4(3个平等的数据库。只读/负载均衡)

amoeba提供读写分离pool相关配置。并且提供负载均衡配置。
可配置server2、server3、server4形成一个虚拟的 virtualSlave,该配置提供负载均衡、failOver、故障恢复功能

Xml代码
  
< dbServer  name ="virtualSlave"  virtual ="true" >   
    
< poolConfig >   
        
< className > com.meidusa.amoeba.server.MultipleServerPool </ className >   
        
<!--  负载均衡参数 1=ROUNDROBIN , 2=WEIGHTBASED  -->   
        
< property  name ="loadbalance" > 1 </ property >   
                   
        
<!--  参与该pool负载均衡的poolName列表以逗号分割  -->   
        
< property  name ="poolNames" > server2,server3,server4 </ property >   
    
</ poolConfig >   
</ dbServer >   
如果不启用数据切分,那么只需要配置QueryRouter属性
wirtePool=server1
readPool=virtualSlave
< queryRouter >   
    
< className > com.meidusa.amoeba.mysql.parser.MysqlQueryRouter </ className >   
    
< property  name ="LRUMapSize" > 1500 </ property >   
    
< property  name ="defaultPool" > server1 </ property >   
  
    
< property  name ="writePool" > server1 </ property >   
    
< property  name ="readPool" > virtualSlave </ property >   
  
    
< property  name ="needParse" > true </ property >   
</ queryRouter >   
那么遇到update/insert/delete将 query语句发送到 wirtePool,将 select发送到 readPool机器中执行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值