php+sqlrelay+mysql实现连接池及读写负载均衡

上一篇 /

下一篇  2008-04-02 18:25:19

/ 个人分类:MySQL

作者:ziqiu

sqlrelay.jpg(20.33 KB)

2007-8-31 14:26

在大型的web应用中数据库经常成为并发访问的一个瓶颈,为了有效的解决并发访问的瓶颈,利用多台数据库master-slave的模式来增加web的并发访问量。

master-slave模式是为了数据同步的问题。

sqlrelay解决连接池问题以及实现读写分离的均衡负载。

sqlrelay配置3个instance A/B/C,A负责从Master和slave读取数据,B负责写数据,且只写Master,C为router,负责调度应用。

php通过A还是通过B连接数据库。

在实际配置中,由于master承担了读写操作,那么在instance A的配置中,可以把从Master的连接稍微降小,把从slave连接读取数据的连接数稍稍增大以此进行平衡。

一、MySQL master/slave配置

################

#mster/slave配置

################

master:192.168.1.51

slave:192.168.1.50

1、master配置

/etc/my.cnf 中加入

binlog-do-db=book book为数据库名

确保

server-id=1

log-bin=mysql-bin

授权给rep用户进行复制操作

GRANT REPLICATION SLAVE ON book.* TOrep@192.168.1.50IDENTIFIED BY '123456';

重启master服务

2、配置slave

vi /etc/my.cnf

设置下面4行

server-id       = 2

master-host     =   192.168.1.51

master-user     =   rep

master-password =   123456

重启slave

3、把master的原始数据导入slave。

二、sqlrelay配置

当前行业中比较流行的连接池解决方案几乎都不支持php,经过多番努力终于在找到了一个开源的连接池技术--------sqlrelay。

sqlreplay支持的语言:

C C++ Perl  Python PHP Ruby  Java TCL Zope

sqlreplay支持的数据库:

Oracle MySQL mSQL PostgreSQL Sybase MS SQL Server   IBM DB2 Interbase Sybase SQLite ODBC MS Access

sqlreplay的网站

http://sqlrelay.sourceforge.net/。

基本思路:

1、配置2个实例用以最终处理业务

clubs-read

clubi-write

其中读取的 instance分别配置两个连接,且两个连接启动对等的连接数。

2、配置一个instance来调度读写操作,即clubr

通过router来区分读写连接不同的mysql数据库。

dbase="mysql" connections="10" maxconnections="20" maxqueuelength="5"

growby="1" ttl="60" endofsession="commit" sessiontimeout="600"

runasuser="nobody" runasgroup="nobody" cursors="5" authtier="listener"

handoff="pass" deniedips="" allowedips="" debug="none"

maxquerysize="65536" maxstringbindvaluelength="4000"

maxlobbindvaluelength="71680" idleclienttimeout="-1" maxlisteners="-1"

listenertimeout="0">

string="host=192.168.1.51;port=3306;db=book;user=club;password=club;"

metric="1" behindloadbalancer="no"/>

string="host=192.168.1.50;port=3306;db=book;user=club;password=club;"

metric="1" behindloadbalancer="no"/>

dbase="mysql" connections="10" maxconnections="40" maxqueuelength="5"

growby="1" ttl="60" endofsession="commit" sessiontimeout="600"

runasuser="nobody" runasgroup="nobody" cursors="5" authtier="listener"

handoff="pass" deniedips="" allowedips="" debug="none"

maxquerysize="65536" maxstringbindvaluelength="4000"

maxlobbindvaluelength="71680" idleclienttimeout="-1" maxlisteners="-1"

listenertimeout="0">

string="host=192.168.1.51;port=3306;db=book;user=club;password=club;"

metric="1" behindloadbalancer="no"/>

我来说两句

显示全部

内容

昵称

验证

提交评论

sqlrelay mysql_php+sqlrelay+mysql实现连接池及读写负载均衡相关推荐

  1. php+sqlrelay+mysql实现连接池及读写负载均衡

    本文主要介绍sqlrelay的配置安装.通过其性能和一些具体环境的测试来帮助开发者应用在相应的场合中去应付大并发的mysql数据库连接. 什么是sqlrelay? Sqlrelay是一个开源的数据库连 ...

  2. Keepalived+LVS+MySQL双主复制实现读写负载均衡及高可用

    目录 一.Keepalived和LVS简介 1. Keepalived简介 2. LVS简介 二.安装配置 1. 下载安装LVS 2. 下载安装Keepalived 3. Keepalived配置 5 ...

  3. mysql odbc连接池_Java Mysql连接池配置和案例分析--超时异常和处理

    前言: 最近在开发服务的时候, 发现服务只要一段时间不用, 下次首次访问总是失败. 该问题影响虽不大, 但终究影响用户体验. 观察日志后发现, mysql连接因长时间空闲而被关闭, 使用时没有死链检测 ...

  4. swoole 连接mysql_swoole教程:用swoole4操作mysql连接池之读写分离

    为什么要读写分离? 一般的系统都是读多写少,利用读写分离,可以提升mysql的效率 读写分离后,从库可以水平扩展 下面我们开始代码之旅吧 配置先改造: $config = [ 'host'=> ...

  5. 使用MySQL Router实现高可用、负载均衡、读写分离

    目录 一.MySQL Router简介 1. 功能 2. 架构 3. 使用 二.安装配置 三.自动失败切换 四.负载均衡 五.读写分离 六.多实例 1. 环境 2. 配置文件 3. 功能测试 参考: ...

  6. tomca7.0 mysql配置连接池_tomcat7.0+mysql连接池配置

    1.Tomcat 中直接使用的方法: 在conf/server.xml下的节点里配置resource,例如: auth="Container" type="javax.s ...

  7. vc2010访问局域网mysql_VC2010利用MySQL++访问mysql. 及连接池示例

    首先下载并安装mysql,我使用的为mysql 5.5版本,安装时注意安装c++的开发包. #1  下载mysql++,解压,  找到install.hta, 修改对应路径,指向vc2008所在路径, ...

  8. nodejs mysql 创建连接池

    用Nodejs连接MySQL 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javas ...

  9. php cli swoole mysql_[了解实践]Swoole、PHP与MySQL:连接池,swoole扩展实现真正的PHP数据库连接池。...

    背景:swoole的出现,包括PHP出现前,在新浪企业邮箱就有基于Sun Solaris 系统上面用c++写Mysql的长连接,那时候的长连接是基于RPC实现,对mysql那一端形成一个远程过程的调用 ...

最新文章

  1. IDEA JAVA gradle等常见工具/包 踩坑记录
  2. PaSS:用于 PacBio 测序的测序模拟器
  3. JSON返回DateTime/Date('123123123')/解决办法
  4. CentOS修改MySql数据库目录datadir
  5. SAP MIGO的界面中Document Overview部分,可以不让一些单据在这里显示。
  6. Ubuntu不能挂载移动硬盘问题Error mounting /dev/sda1 at /media/XXXX: Command-line `mount -t ntfs -o
  7. 梅耶尔何时离开雅虎?答案将很快揭晓
  8. [RHEL5企业级Linux服务攻略]--第11季 NIS服务全攻略
  9. 人机交互,情感计算,,人工智能相关研究的科研团队
  10. java 开源客服系统_一个开源的智能客服系统
  11. 用c语言编程小鸭子,小鸭子
  12. 英语学习详细笔记(五)WH问句、祈使句、感叹句
  13. 360cdn能挡住cc攻击_揭秘为何使用CDN后一但被cc攻击网站就瘫痪的真正原因?
  14. 海信E8H Mini LED 电视评测
  15. Ceph之RBD恢复的几种方式与原理
  16. pandas中强大的绘制图表功能——DataFrame.hist(),以及统计分析函数——DataFrame.describe()
  17. Lua -- 重写pairs方法(让字典访问有序)
  18. Windows系统忘记开机密码解决方案
  19. python 随手记
  20. CNN Attention

热门文章

  1. spring 安全编码_Spring安全性和密码编码
  2. rhq监控软件_RHQ指标的WildFly子系统
  3. vert.x_使用vert.x 2.0,RxJava和mongoDB创建simpe RESTful服务
  4. 休眠面试问答-最终清单
  5. jedis入门_Jedis入门
  6. 使用Arquillian(远程)测试OpenLiberty
  7. macosx jdk_MacOSX环境上的多个Java JDK
  8. 使用Oracle Data Integrator(和Kafka / MapR流)完善Lambda体系结构
  9. Oracle JDK 9 Early Access文档已更新
  10. 在分析了47,251个依赖关系之后,2016年排名前100的Java库