sqlrelay mysql_php+sqlrelay+mysql实现连接池及读写负载均衡
php+sqlrelay+mysql實現(xiàn)連接池及讀寫負(fù)載均衡
上一篇 /
下一篇 ?2008-04-02 18:25:19
/ 個人分類:MySQL
作者:ziqiu
sqlrelay.jpg(20.33 KB)
2007-8-31 14:26
在大型的web應(yīng)用中數(shù)據(jù)庫經(jīng)常成為并發(fā)訪問的一個瓶頸,為了有效的解決并發(fā)訪問的瓶頸,利用多臺數(shù)據(jù)庫master-slave的模式來增加web的并發(fā)訪問量。
master-slave模式是為了數(shù)據(jù)同步的問題。
sqlrelay解決連接池問題以及實現(xiàn)讀寫分離的均衡負(fù)載。
sqlrelay配置3個instance A/B/C,A負(fù)責(zé)從Master和slave讀取數(shù)據(jù),B負(fù)責(zé)寫數(shù)據(jù),且只寫Master,C為router,負(fù)責(zé)調(diào)度應(yīng)用。
php通過A還是通過B連接數(shù)據(jù)庫。
在實際配置中,由于master承擔(dān)了讀寫操作,那么在instance A的配置中,可以把從Master的連接稍微降小,把從slave連接讀取數(shù)據(jù)的連接數(shù)稍稍增大以此進(jìn)行平衡。
一、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為數(shù)據(jù)庫名
確保
server-id=1
log-bin=mysql-bin
授權(quán)給rep用戶進(jìn)行復(fù)制操作
GRANT REPLICATION SLAVE ON book.* TOrep@192.168.1.50IDENTIFIED BY '123456';
重啟master服務(wù)
2、配置slave
vi /etc/my.cnf
設(shè)置下面4行
server-id? ?? ? = 2
master-host? ???=? ?192.168.1.51
master-user? ???=? ?rep
master-password =? ?123456
重啟slave
3、把master的原始數(shù)據(jù)導(dǎo)入slave。
二、sqlrelay配置
當(dāng)前行業(yè)中比較流行的連接池解決方案幾乎都不支持php,經(jīng)過多番努力終于在找到了一個開源的連接池技術(shù)--------sqlrelay。
sqlreplay支持的語言:
C C++ Perl??Python PHP Ruby??Java TCL Zope
sqlreplay支持的數(shù)據(jù)庫:
Oracle MySQL mSQL PostgreSQL Sybase MS SQL Server? ?IBM DB2 Interbase Sybase SQLite ODBC MS Access
sqlreplay的網(wǎng)站
http://sqlrelay.sourceforge.net/。
基本思路:
1、配置2個實例用以最終處理業(yè)務(wù)
clubs-read
clubi-write
其中讀取的 instance分別配置兩個連接,且兩個連接啟動對等的連接數(shù)。
2、配置一個instance來調(diào)度讀寫操作,即clubr
通過router來區(qū)分讀寫連接不同的mysql數(shù)據(jù)庫。
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"/>
我來說兩句
顯示全部
內(nèi)容
昵稱
驗證
提交評論
總結(jié)
以上是生活随笔為你收集整理的sqlrelay mysql_php+sqlrelay+mysql实现连接池及读写负载均衡的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: refreshtoken用mysql_微
- 下一篇: ddos 原理(ddos网页端原理)