mysql amoeba负载均衡_Amoeba for mysql 0.12(读写分离、负载均衡、Failover、数据切分)...

本文介绍了Master/Slave结构的数据库读写分离,通过Amoeba实现负载均衡和故障恢复。Amoeba还支持数据切分,可以根据业务规则将数据分布到多个服务器,提供线性扩展能力。更新、插入和删除操作在Master上执行,查询操作在Slave上执行,提高系统性能。
摘要由CSDN通过智能技术生成

一、Master/Slave 结构读写分离:

Master: server1 (可读写)

slaves:server2、server3、server4(3个平等的数据库。只读/负载均衡)

amoeba提供读写分离pool相关配置。并且提供负载均衡配置。

可配置server2、server3、server4形成一个虚拟的 virtualSlave,该配置提供负载均衡、failOver、故障恢复功能

com.meidusa.amoeba.server.MultipleServerPool

1

server2,server3,server4

如果不启用数据切分,那么只需要配置QueryRouter属性

wirtePool=server1

readPool=virtualSlave

com.meidusa.amoeba.mysql.parser.MysqlQueryRouter

1500

server1

server1

virtualSlave

true

那么遇到update/insert/delete将 query语句发送到 wirtePool,将 select发送到 readPool机器中执行。

二、数据切分:

这方面amoeba显然更加容易了。

举个数据切分例子:

select * from user_event where user_id='test' and  gmt_create between Sysdate() -1 and Sysdate()

如果根据gmt_create 时间进行数据切分,比如 6个月进行切分一次

amoeba提供利用类似sql表达式进行数据切分:

规则1:GMT_CREATE > to_date('2008-01-01','yyyy-mm-dd') and GMT_CREATE < to_date('2008-05-31','yyyy-mm-dd')

规则1对应服务器1

规则2:GMT_CREATE > to_date('2008-06-01','yyyy-mm-dd') and GMT_CREATE < to_date('2008-12-31','yyyy-mm-dd')

规则2对应服务器2

上面的sql的条件 gmt_create 与规则里面的的gmt_create 进行 交集判断,如果存在交集则表示符合规则。

则会将sql转移到 规则1 的相应的服务器上面执行。

利用amoeba写出这种类似规则很容易,但是要想做到数据切分以后可线性扩容,那么这样的规则需要自己根据业务实际情况进行设置。

amoeba可同时将sql 并发分发到多台服务器、然后将结果合并再反馈给客户端,而且amoeba内部现成采用无阻塞模式,工作线程是不会等待的,并发请求多台 database server情况下,客户端等待的时间基本上面是性能最差的那台 database server+amoeba内部解析协议的时间

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2008-05-04 11:29

浏览 1615

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值