Blogger Information
Blog 11
fans 0
comment 0
visits 8176
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
MySQL负载均衡 & 读写分离
一个人流浪
Original
648 people have browsed it


在庞大的数据量应用系统中,除了使用复制策略实现数据库高可用之外,还可结合业务功能,将数据也以模块划分,存入不同的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端口号。

mysql_proxy  
./mysql-proxy-path/bin/mysql-proxy \  
--proxy-backend-addresses=192.168.171.199:3306 \    //DB服务器1  
--proxy-backend-addresses=192.168.171.200:3306      //DB服务器2

(2)使用mysql客户端连接mysql_proxy,端口4040即可。

mysql -h “192.168.171.48” -P 4040 -u root -p 123456    //192.168.171.48 为安装mysql_proxy的代理服务器IP

也可在配置时,直接指定服务器处理的请求类型:

./bin/mysql-proxy  \  
--proxy-backend-addresses=192.168.1.199:3306 \  
--proxy-read-only-backend-addresses=192.168.1.200:3306 \      //200数据库服务器仅用于读  
--proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

本文转载自: http://blog.csdn.net/daybreak1209/article/details/51644818

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post