使用Mysql-Proxy实现Mysql的读写分离

一、mysql读写分离原理

MYSQL所谓主从复制和MYSQL的读写分离两者有着紧密联系,首先部署主从复制,只有主从复制完了,才能在此基础上进行数据的读写分离。

MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。简单来说,读写分离就是在主服务器上写,只在从服务器上读,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

二、为什么要进行读写分离

因为数据库的“写”(写10000条数据到oracle可能要3分钟)操作是比较耗时的。
但是数据库的“读”(从oracle读10000条数据可能只要5秒钟)。

所以读写分离,解决的是,数据库的写入,影响了查询的效率。

三、什么时候要进行读写分离

        数据库不一定要读写分离,如果程序使用数据库较多时,而更新少,查询多的情况下会考虑使用,利用数据库 主从同步 。可以减少数据库压力,提高性能。

四、MYSQL读写分离的实现

1、实验主机:

172.25.88.2             server2           master

172.25.88.3             server3          slave

172.25.88.4             server4          mysql-proxy

在server2和server3上做主从复制,参考上篇博客
server2是master,server3是slave
在server3上做mysql-proxy(调度器)

2、配置读写分离

1)下载mysql-proxy数据包并解压,将解压后的目录放在/usr/local下

tar   zxf   mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

mv   mysql-proxy-0.8.5-linux-el6-x86-64bit    /usr/local/mysql-proxy

2)将mysql-proxy的二进制命令放进系统环境变量中,方便后续操作

cd   /usr/local/mysql-proxy/bin

vim    ~/.bash_profile

PATH=$PATH:$HOME/bin:/usr/local/mysql-proxy/bin

3)实现读写分离是有lua脚本实现的

vim   rw-splitting                               #修改数据库读写分离时的最大最小值

min_idle_connections = 1,             # 最小连接数
max_idle_connections = 2,            #最大连接数

4)配置mysql-proxy

编辑读写分离的配置文件

vim   /usr/local/mysql-proxy/conf/mysql-proxy.conf

[mysql-proxy]

user=root                                                                  #proxy运行的用户身份
proxy-address=0.0.0.0:3306                                  #proxy监听本机所有接口
proxy-read-only-backend-addresses=172.25.88.3:3306                #后端slave(读)服务器
proxy-backend-addresses=172.25.88.2:3306                                 #后端master(读写)服务器
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua          #lua脚本所在位置
log-level=debug
daemon=true
keepalive=true

5)启动mysql-proxy

mysql-proxy  --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf读取文件,会报错,根据错误修改

修改启动文件权限,并再次启动

6)查看监听端口信息

7)三台虚拟机安装lsof监控工具,进行监控,查看3306端口哪个终端占用

yum   install  lsof   -y

8)master端授权给远程登陆数据库的用户

9)在真机进行登陆

此时,查看监控可知:连接到master端

server2:mysql->server3:55554                        #server2和server3建立的连接是主从复制
server2:mysql->server4:44941 (ESTABLISHED) 

10)通过外界连接第三次数据库时发生读写分离,此时插入数据是向master中插入数据,读是在slave上.
第三次连接数据库时发生读写分离,读数据在server3上,写数据在server2上:

server2:mysql->server4:44943                               #server2上最多能连接两个

11)向数据库中写入数据:

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值