Mysql读写分离配置说明_第1页
Mysql读写分离配置说明_第2页
Mysql读写分离配置说明_第3页
Mysql读写分离配置说明_第4页
Mysql读写分离配置说明_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉众采在线科技有限公司http:/ 武汉众采在线科技有限公司http:/ mysql 读写分类配置说明1方案本文档是针对基于mysql 数据库复制技术且从应用上进行读写分离的配置方案,遵循的原则为:a) 所用数据库写操作都在主数据库上完成b) 所有涉及事务处理的数据库操作在主数据库上完成c) 读操作可以根据从数据库服务器的负载状态进行智能选择d) 每台数据库服务器安装服务器状态汇报程序及时向读写分离服务器回报自己的忙闲状态指标本文档中的配置说明是遵循以上原则的一种实现,并非是固定的模式。2配置说明2.1 数据服务器配备由于测试环境只装了主、 从服务器各一台, 这里用主服务器再逻辑模拟一台从服

2、务器ip 地址:端口服务器类型applicationcontext.xml 中的配置:3306 主sessionfactory :3306 从sessionfactoryforread1 :3306 从(模拟)sessionfactoryforread2 武汉众采在线科技有限公司http:/ 武汉众采在线科技有限公司http:/ 2.2 在 spring配置文件中进行配置2.2.1 定义数据源武汉众采在线科技有限公司http:/ 武汉众采在线科技有限公司http:/ 以 上 定 了 了3个 数 据 源 , 分 别 是dataso

3、urce、datasourceforread_1 、 datasourceforread_2 。注意上面 datasourceforread_1 和 datasourceforread_2 定义中增加了的配置,配置这两个数据源为只读数据源, 当通过他们发出修改命令时, 系统会自动报错,这一点在改应用时要特别注意。2.2.2 定义抽象的spring session工厂com.shf.utils.web.dialectforinkfish beeeye2trueupdate!- true -truecom.googlecode.hibernate.memcached.memcachedcachep

4、rovidertruenet.rubyeye.xmemcached.utils.hibernate.xmemcachedclientfactory:11211300 武汉众采在线科技有限公司http:/ 武汉众采在线科技有限公司http:/ classpath:/com/shf/pojo/web-inf/lib/sucai-pojo.jar2.2.3 定义实体 session工厂(从抽象工厂继承)2.2.4 定义专用于分派数据库读访问操作的实例 !-武汉众采在线科技有限公司http:/ 武汉众采在线科技有限公司http:/ 其中和之间内容为前面定义的实体工厂,可以定义多个

5、实体工厂(这里注释中的代码定义了两个),它们是参与智能分派读操作请求所针对的数据库链接工厂,注意在bean 项目中的session工厂实例前面必须要加& 定数据库服务器失效参数,单位为毫秒, 90000 代表 90 秒也就是 1 分半钟,如果超出该参数设定的时间范围,读写分离服务仍没有得到某服务器的状态信息,该服务器将为不可用状态。该值是动态计算的,如果服务器恢复报告其状态信息,也会即刻生效。数据读操作请求也可分派到主服务器上去,如果主服务器更空闲的话,这样做更加合理。这里sessionfactoryforread_2就是用主服务器模拟的另外一台从服务器,这里直接用主服务器的s

6、ession 工厂sessionfactory也还是可以的。2.3 安装服务器状态汇报程序每台参与数据库读请求智能分派机制的数据库服务器都要安装,当前是用 python 语言实现的,功能是定时( 1 分钟)周期汇报最近5分钟的服务器平均负载指标给读写分离服务器,当前的读写分离是做在 web 应用服务上的(也就是和web 应用部署在一起的)。状态回报程序需要python2.6 以上(含)版本运行,这里简要列一下 python 2.7在 linux 上的安装步骤以及python for mysql 客户端:tar xvzf python-2.7.2.tgz cd python-2.7.2 武汉众采

7、在线科技有限公司http:/ 武汉众采在线科技有限公司http:/ ./configure -prefix=/usr make make install 安装 python for mysql 客户端unzip petehunt-pymysql-pymysql-0.5-31-g3656421.zip cd petehunt-pymysql-3656421 python setup.py install 当前的读写回报程序如下:#!/usr/bin/python import os import sys import pymysql import urllib, urllib2 from dat

8、etime import * database_ip = database_port = 3306 database_user = root database_password = 123456 database_db = beeeye2 recipient_list = /help/reportload.jsp?load= 武汉众采在线科技有限公司http:/ 武汉众采在线科技有限公司http:/ f = open(/proc/loadavg) cont = f.readline() f.close() loadavg = cont.sp

9、lit( ,2)1 conn = pymysql.connect(host=database_ip, port=database_port, user=database_user, passwd=database_password, db=database_db) cur = conn.cursor() count = cur.execute(show slave status) if 1 != count: cur.close() conn.close() os._exit(1) r = cur.fetchone() cur.close() conn.close() if r0 != wai

10、ting for master to send event or r10 != yes or r11 != yes or r32 10: os._exit(1) for rec in recipient_list: url = rec + urllib.pathname2url(loadavg) try: 武汉众采在线科技有限公司http:/ 武汉众采在线科技有限公司http:/ urllib2.urlopen(url, none, 3).close() except exception, err: print sys.stderr, str(datetime.today() + : erro

11、r for getting + url + , message: + str(err) 上面脚本中的配置参数需要根据实际情况加以更改,定义的recipient 为一个集合,用于定义多个回报对象定时回报功能采用linux 系统 crontab来实现linux下安装定时汇报执行功能。这里假设上面的脚本存为/root/u.py , 这 里 配 置 为 没 分 钟 执 行 , 错 误 日 志 输 出 到/var/log/reportload/errorlog 文件。* * * * /root/u.py 2/var/log/reportload/errorlog 汇报接收程序reportload.jsp

12、 部署在 web 服务器 0的/help 目录下,其代码如下:= dbforreadloadavg.servernumber) return; try loadint = math.round(float.parsefloat(load) * 100); if(0 loadint) return; catch(numberformatexception ex) return; integer idxint = dbforreadloadavg.iptoserverindex.get(remoteaddr); if ( null != idxint) dbforreadloadavg.updateserverload(idxint,loadint); % 2.4 在项目中如何使用由于采用在应用上进行读写分离的配置方案,所以需要在程序设计时判断当前正在开发的功能点是否用涉及到数据库写操作,如果是写数据库操作, 就沿

温馨提示

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

评论

0/150

提交评论