下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- linear regression - university of texas at arlington:线性回归-德克萨斯大学阿灵顿
- 净土重生:土壤修复新纪元
- 海洋气象:新纪元的商机
- 7月美妆行业抖音、小红书营销报告
- 2024年南昌下载客运从业资格证模拟考试题库
- 2024年长春客运从业资格证救护考试答案
- 2024年玉溪道路旅客运输驾驶员从业资格模拟试题
- 新邵县2024年四年级数学第一学期期末达标测试试题含解析
- 2024年梅州道路旅客运输知识考试题库
- 2024年商丘客运从业资格证模拟考试
- 体育特长生田径项目测试表
- 2024-2030年中国鲟鱼养殖行业发展监测及投资战略规划报告
- 2024年全国司法考试《专利法》模拟试题解析及答案(三)
- 数学和环境学的关系与应用
- 非遗文化介绍课件:花灯
- 国外装饰行业现状分析
- 速冻米面制品工艺流程及操作规程
- 叙事的护理课件
- 少先队辅导员技能大赛题库
- 建筑工程安全管理-拆除工程培训课件
- DB44-T 2452-2023高速公路服务设施建设规模设计规范
评论
0/150
提交评论