Chinaunix

标题: 用Amoeba构架MySQL分布式数据库环境 [打印本页]

作者: huifeideluotuo    时间: 2009-02-04 15:17
标题: 用Amoeba构架MySQL分布式数据库环境

                    这几天闲逛,发现一个和mysql-proxy功能相似的工具Amoeba,前面有文章介绍过mysql-proxy的使用。
    这里引用下Amoeba:
    Amoeba是一个类似
MySQL Proxy

分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目。其主要功能包括读写分离,垂直分库,水平分库等,经过测试,发现其功能和稳定性都
非常的不错,如果需要构架分布式数据库环境,采用Amoeba是一个不错的方案。目前Amoeba一共包括For aladdin,For
MySQL和For Oracle三个版本,本文主要关注For
MySQL版本的一个读写分离实现。实际上垂直切分和水平切分的架构也相差不大,改动几个配置就可以轻松实现。
下图是一个采用Amoeba的读写分离技术结合MySQL的Master-Slave Replication的一个分布式系统的架构:

Amoeba处于在应用和数据库之间,扮演一个中介的角色,将应用传递过来的SQL语句经过分析后,将写的语句交给Master库执行,将读的语句
路由到Slave库执行(当然也可以到Master读,这个完全看配置)。Amoeba实现了简单的负载均衡(采用轮询算法)和Failover。如果配
置了多个读的库,则任何一个读的库出现宕机,不会导致整个系统故障,Amoeba能自动将读请求路由到其他可用的库上,当然,写还是单点的依赖于
Master数据库的,这个需要通过数据库的切换,或者水平分割等技术来提升Master库的可用性。
Amoeba可以在不同机器上启动多个,并且做同样的配置来进行水平扩展,以分担压力和提升可用性,可以将Amoeba和MySQL装在同一台机
器,也可以装在不同的机器上,Amoeba本身不做数据缓存,所以对于内存消耗很少,主要是CPU占用。对于应用来说,图中的三个Amoeba就是三台一
模一样的MySQL数据库,连接其中任何一台都是可以的,所以需要在应用端有一个Load
balance和Failover的机制,需要连接数据库时从三台中随机挑选一台即可,如果其他任何一台出现故障,则可以自动Failover到剩余的可
用机器上。MySQL的JDBC驱动从connector-j
3.17版本起已经提供了这样的负载均衡和故障切换的功能,那么剩下的事情对于应用来说就很简单了,不需要做太多的改动就能搭建一套高可用的MySQL分
布式数据库环境,何乐而不为?
源地址:
地址:
http://rdc.taobao.com/blog/dba/html/248_amoeba_for_mysql_distribute_environment.html


               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/25264/showart_1812710.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2