php+sqlrelay+mysql实现连接池及读写负载均衡
程序员文章站
2022-05-02 17:23:05
...
在大型的web应用中数据库经常成为并发访问的一个瓶颈,为了有效的解决并发访问的瓶颈,利用多台数据库master-slave的模式来增加web的并发访问量。 master-slave模式是为了数据同步的问题。 sqlrelay解决连接池问题以及实现读写分离的均衡负载。 sqlrelay配置3
在大型的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.* TO rep@192.168.1.50 IDENTIFIED 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数据库。
推荐阅读
-
Apache2.2以上版本与Tomcat整合配置及负载均衡实现
-
Heartbeat、haproxy及MySQL双主复制实现读写负载均衡及高可用详细教程
-
Nginx配置upstream实现负载均衡及keepalived实现nginx高可用
-
详解Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
-
Nginx+Tomcat8+Memcached实现负载均衡及session共享
-
python实现mysql的读写分离及负载均衡
-
Nginx反向代理及负载均衡如何实现(基于linux)
-
Nginx负载均衡及集群实现
-
Nginx正反向代理及负载均衡等功能实现配置代码实例
-
Spring Cloud 负载均衡器 Ribbon原理及实现