MySQL数据库优化(八)——MySQL负载均衡 & 读写分离

释放双眼,带上耳机,听听看~!

      在庞大的数据量应用系统中,除了使用复制策略实现数据库高可用之外,还可结合业务功能,将数据也以模块划分,存入不同的db服务器中。

      在
高并发负载均衡(一)——企业架构分析和DNS中提高对应网站高并发的主要集中在两处,
web服务的高并发和数据库高并发;应对web服务的高并发在前面系列博文中有所介绍,使用各种负载方式均发访问量到不同的服务器不失为良好的策略。数据库高并发同样可通过负载均衡得以缓解。

一、负载均衡基本思路

      在一个服务器集群中,尽可能的平均负载量。通常做法是
在服务器前端设置一个负载均衡器(专门的硬件设备),mysql的负载均衡,通常都离不开数据分片(把数据分割成小块,存储到不同的db节点中)、复制等操作。

MySQL数据库优化(八)——MySQL负载均衡 & 读写分离

      负载均衡的主要贡献,除了均发数据库请求,还可
提供管理读/写策略。在分发请求时则确定那些节点可写,可读,随即将请求发送到指定节点上执行操作。

二、实现负载均衡的方式:

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

给TA打赏
共{{data.count}}人
人已打赏
安全运维

OpenSSH-8.7p1离线升级修复安全漏洞

2021-10-23 10:13:25

安全运维

设计模式的设计原则

2021-12-12 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索