sqlrelay mysql_php+sqlrelay+mysql实现连接池及读写负载均衡
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实现连接池及读写负载均衡的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: refreshtoken用mysql_微
- 下一篇: mysql设计一个简单的系统_一个简单数