最近在研究Web服务端负载均衡方面的技术,参考网上资料,总体思路可以分为如下几类:,典型的代表就是Nginx+Tomcat实现负载均衡;。本文主要关注数据库集群。,项目是SpringMVC+myBatis,SQL路由交给Spring,通过AOP或者Annotation由代码显示的控制Datasource。优点是路由策略的扩展性和可控性较强。缺点是耦合到Spring;需要加入控制代码。,MysqlProxy、Amoeba、Atlas等中间件貌似都能符合需求。优点是与应用层解耦。缺点是增加一个服务维护的风险点,性能及稳定性待测试,需要支持代码强制主从和事务。,是通过保持多个数据源的链接并根据ReadOnlyTrue/False来选择数据源。相当于应用层解决方案的一个现有实现,扩展性更弱。并且貌似不能使用其他驱动。由于耦合较高暂不考虑。,关键字:SpringAOP;,Amoeba就属于这种情况,此外还有Mysql官方提供的MysqlProxy;,直接与数据库连接驱动耦合,扩展性弱,目前还未做原型尝试。综合上述分析,考虑到需要与应用层解耦,现采用中间件解决方案,使用Amoeba做SQL路由,实现数据库读写分离。既然选择使用Amoeba,让我们先了解什么是Amoeba?它能做什么?要怎么做?最后再看看它不能做什么。AmoebaAmoeba是什么Amoeba(变形虫)项目,该开源框架于2008年开始发布一款AmoebaforMysql软件。详细资料可参阅Amoeba官方文档(需翻墙)。Amoeba能做什么Amoeba致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库代理层(DatabaseProxy)开发。座落与Client、DBServer(s)之间,对客户端透明。具有负载均衡、高可用性、SQL过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。通过Amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能。Amoeba不能做什么既然知道Amoeba能为我们解决什么问题,也要做到Amoeba不擅长的事情。这样在具体项目技术方案选择时,方能权衡考虑。Amoeba对于以下几点暂时无能为力:;,官方说近期会支持;,比如一次请求返回10w以上甚至更多数据的场合;,amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致。若实际项目中所需要的功能正式Amoeba的短板,建议使用MysqlProxy作为中间件,或者在应用层通过程序控制数据源,手动实现数据库读写分离。:。:。:。OS版本。[******@chenllcentos ~]# cat /etc/redhat-release CentOS release (Final)具体实现Mysql数据库读写分离的具体实现主要包括两个部分配置,即数据主从复制和Amoeba代理,现分别进行介绍。主从复制为什么要进行主从复制呢,其实很容易理解,因为数据要同步啊。查看服务器A是否已经安装Mysql数据库。[******@chenllcentos ~]# rpm -aq | grep mysql若无消息显示,则进行Mysql安装,否则跳过此步骤。yum install -y mysql-server mysql mysql-devel mysql-libsMysql安装完毕,默认开机不启动Mysql服务。[******@chenllcentos ~]# chkconfig --list | grep mysqldmysqld 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭现在我们更改下配置,让Mysql开机启动。[******@chenllcentos ~]# chkconfig mysqld on[******@chenllcentos ~]# c
mysql读写主从配置 来自淘豆网m.daumloan.com转载请标明出处.