使用mysql-proxy实现mysql读写分离_第1页
使用mysql-proxy实现mysql读写分离_第2页
使用mysql-proxy实现mysql读写分离_第3页
使用mysql-proxy实现mysql读写分离_第4页
使用mysql-proxy实现mysql读写分离_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 由于公司数据库负载较大,所以便打算使用读写分离来减轻mysql的负载。目前较为常见的mysql读写分离分为两种:1、基于程序代码内部实现:在代码中根据select、insert进行路由分类;这类方法也是目前生产环境应用最广泛的。优点是性能较好,因为在程序代码中实现,不需要增加额外的设备作为硬件开支。缺点是需要开发人员来实现,运维人员无从下手。2、基于中间代理层实现:我们都知道代理一般是位于客户端和服务器之间,代理服务器接到客户端请求后通过判断然后转发到后端数据库。在这有两个代表性程序mysql-proxy:mysql-proxy为mysql开源项目,通过其自带的lua脚本进行sql 判断,虽

2、然是mysql官方产品,但是mysql官方并不建议将mysql-proxy用到生产环境。amoeba:由陈思儒开发,作者曾就职于阿里巴巴,现就职于盛大。该程序由java语言进行开发,目前只听说阿里巴巴将其用于生产环境。另外,此项目严重缺少维护和推广(作者有个官方博客,很多用户反馈的问题发现作者不理睬经过上述简单的比较,通过程序代码实现mysql读写分离自然是一个不错的选择。但是并不是所有的应用都适合在程序代码中实现读写分离,像大型SNS、B2C这类应用可以在代码中实现,因为这样对程序代码本身改动较小;像一些大型复杂的java应用,这种类型的应用在代码中实现对代码改动就较大了。所以,像这种应用一

3、般就会考虑使用代理层来实现。下面我们看一下如何搭建mysql-proxy来实现mysql读写分离环境拓扑如下: 一、安装mysql-proxy1、安装lua(mysql-proxy需要使用lua脚本进行数据转发#vi Makefile,修改INSTALL_TOP= /usr/local/lua#make posix#make install2、安装libevent#./configure -prefix=/usr/local/libevent#make & make install3、安装check#./configure & make & make install4、安装mysql客户端#.

4、/configure -without-server & make & make install5、设置环境变量(安装mysql-proxy所需变量#vi /etc/profileexport LUA_CFLAGS=-I/usr/local/lua/include LUA_LIBS=-L/usr/local/lua/lib -llua -ldl LDFLAGS=-L/usr/local/libevent/lib -lmexport CPPFLAGS=-I/usr/local/libevent/includeexport CFLAGS=-I/usr/local/libevent/include#

5、 source /etc/profile6、安装mysql-proxy# ./configure -prefix=/usr/local/mysql-proxy -with-mysql -with-lua#make & make install7、启动mysql-proxy本次对两台数据库实现了读写分离;mysql-master为可读可写,mysql-slave为只读#/usr/local/mysql-proxy/sbin/mysql-proxy-proxy-lua-script=/usr/local/mysql-proxy/share/mysql-proxy/rw-splitting.lua

6、&注:如果正常情况下启动后终端不会有任何提示信息,mysql-proxy启动后会启动两个端口4040和4041,4040用于SQL转发,4041用于管理mysql-proxy。如有多个mysql-slave可以依次在后面添加二、测试1、连接测试因为默认情况下mysql数据库不允许用户在远程连接mysqlgrant all privileges on *.* to root% identified by 123456;mysqlflush privileges;客户端连接2、读写分离测试为了测试出mysql读写分离的真实性,在测试之前,需要开启两台mysql的log 功能,然后在mysql-sl

7、ave服务器停止复制、在两台mysql配置文件f中加入log=query.log,然后重启、在mysql-slave上执行SQL语句stop slave、在两台mysql上执行#tail -f /usr/local/mysql/var/query.log、在客户端上连接mysql(三个连接以上,然后执行create、select等SQL语句,观察两台mysql的日志有何变化注:生产环境中除了进行程序调试外,其它不要开启mysql查询日志,因为查询日志记录了客户端的所有语句,频繁的IO操作将会导致mysql整体性能下降总结:在上述环境中,mysql-proxy和mysql-master、mysql-slave三台服务器均存在单点故障。如果在可用性要求较高的场合,单点隐患是绝对不允许的。为了避免mysql-proxy单点隐患有两种方法,一种方法是mysql-proxy配合keepalived 做双机,另一种方法是将mysql-proxy和应用服务安装到同一台服务器上;为了避免mysql-master单点故障可以使用DRBD+hear

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论