在庞大的数据量应用系统中,除了使用复制策略实现数据库高可用之外,还可结合业务功能,将数据也以模块划分,存入不同的db服务器中。
在
高并发负载均衡(一)——企业架构分析和DNS中提高对应网站高并发的主要集中在两处,
web服务的高并发和数据库高并发;应对web服务的高并发在前面系列博文中有所介绍,使用各种负载方式均发访问量到不同的服务器不失为良好的策略。数据库高并发同样可通过负载均衡得以缓解。
一、负载均衡基本思路
在一个服务器集群中,尽可能的平均负载量。通常做法是
在服务器前端设置一个负载均衡器(专门的硬件设备),mysql的负载均衡,通常都离不开数据分片(把数据分割成小块,存储到不同的db节点中)、复制等操作。
负载均衡的主要贡献,除了均发数据库请求,还可
提供管理读/写策略。在分发请求时则确定那些节点可写,可读,随即将请求发送到指定节点上执行操作。
二、实现负载均衡的方式:
1、mysql读写分离:
mysql复制时,产生了多个数据副本(备库),为减少服务器压力,备库用于处理读操作,主库可同时处理读写是mysql集群实现读写分离的常用策略。
由于备库的复制是异步的,无法实时同步,读写分离的主要难点也在于备库上的脏数据。通常如果使用备库进行读,一般对数据的实时性要求不能太高。对此,mysql提供了几种常见的读写分离方式,例如基于查询的读写分离、基于脏数据、基于会话等,有兴趣可继续研究。
mysql设置的读写分离,减少了主库的请求量,将大量读的操作发送给备库,实现负载均衡。
2、修改DNS
在高并发负载均衡(一)——企业架构分析和DNS中详细介绍了DNS以及DNS如何实现负载,简言之,通过n个服务器IP指定到一个域名,根据请求的不同标识特征,将请求发送给不同的IP服务器进行处理。
3、引入中间件
mysql官方提供了一个mysql负载的中间件,mysql_proxy,也需要在服务器上进行安装,修改配置文件(mysql的服务器IP),实质与nginx类似,也是一个
代理服务器。
三
、负载均衡
实战
下面以mysql_proxy为例,演示通过mysql_proxy的读写分离配置实现负载均衡。
1、官网下载安装mysql_proxy:
mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz
2、解压后, 该目录包含已经编译好的二进制文件
(1)
执行以下语句,
配置后台目标服务器
IP
端口号。
1
2
3
4
5 1mysql_proxy
2./mysql-proxy-path/bin/mysql-proxy \
3--proxy-backend-addresses=192.168.171.199:3306 \ //DB服务器1
4--proxy-backend-addresses=192.168.171.200:3306 //DB服务器2
5
(
2
)使用
mysql
客户端连接
mysql_proxy,端口4040即可。
1
2 1mysql -h “192.168.171.48” -P 4040 -u root -p 123456 //192.168.171.48 为安装mysql_proxy的代理服务器IP
2
1
2 1也可在配置时,直接指定服务器处理的请求类型:
2
1
2
3
4
5 1./bin/mysql-proxy \
2--proxy-backend-addresses=192.168.1.199:3306 \
3--proxy-read-only-backend-addresses=192.168.1.200:3306 \ //200数据库服务器仅用于读
4--proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
5