使用mysql-proxy实现mysql的读写分离

通过MySQLProxy实现读写分离

MySQL读写分离是指让master处理写操作,让slave处理读操作,非常适用于读操作量比较大的场景,可减轻master的压力。
使用mysql-proxy实现mysql的读写分离,mysql-proxy实际上是作为后端mysql主从服务器的代理,它直接接受客户端的请求,对SQL语句进行分析,判断出是读操作还是写操作,然后分发至对应的mysql服务器上。
这里写图片描述


实验主机(系统均为rhel6.5.x86_64):

master:172.25.40.2     server2
slave:172.25.40.1        server1
mysql-proxy:172.25.40.3      server3

首先我们需要配置一下主从复制,请查看之前的博客 mysql主从复制,配置完主从复制之后继续:

下载安装包并解压到指定目录:

https://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz       #下载安装包
[root@server3 ~]# tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
[root@server3 ~]# mv mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy
[root@server3 mysql-proxy]# cd bin
[root@server3 bin]# vim ~/.bash_profile 
 10 PATH=$PATH:$HOME/bin:/usr/local/mysql-proxy/bin
[root@server3 bin]# source ~/.bash_profile 
[root@server3 mysql-proxy]# cd share/
[root@server3 share]# cd doc/
[root@server3 doc]# cd mysql-proxy/
[root@server3 mysql-proxy]# vim rw-splitting.lua 
 40                 min_idle_connections = 1,    最小连接数
 41                 max_idle_connections = 2,    最大连接数

mysql-proxy配置启动文件

配置项可以通过以下命令查看

/usr/local/mysql-proxy/bin/mysql-proxy --help
[root@server3 mysql-proxy]# cd
[root@server3 ~]# cd /usr/local/mysql-proxy/
[root@server3 mysql-proxy]# mkdir conf
[root@server3 mysql-proxy]# mkdir logs
[root@server3 mysql-proxy]# cd conf/
[root@server3 conf]# vim mysql-proxy.conf
    [mysql-proxy]
    user=root
    proxy-address=0.0.0.0:3306
    proxy-read-only-backend-addresses=172.25.40.1:3306
    proxy-backend-addresses=172.25.40.2:3306
    proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
    log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log
    log-level=debug
    daemon=true
    keepalive=true
    [root@server3 conf]# chmod 660 /usr/local/mysql-proxy/conf/mysql-proxy.conf 

这里写图片描述

启动mysql-proxy

[root@server3 conf]# mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf 

查看监听端口

[root@server3 conf]# netstat -antlp

这里写图片描述

测试:

在mster给root一个远程登陆的权限

[root@server2 ~]# mysql -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Westos.123';

开启一个shell连接mysql

[root@foundation40 Desktop]# mysql -h 172.25.40.3 -u root -p
Enter password:         #mysql登陆密码
MySQL [(none)]> use westos
MySQL [westos]> select * from userlist;

【server2】

[root@server2 ~]# yum install -y lsof
[root@server2 ~]# lsof -i :3306

这里写图片描述
再开启一个shell连接mysql

[kiosk@foundation40 ~]$ mysql -h 172.25.40.3 -u root -p
Enter password: 
MySQL [(none)]> use westos
MySQL [westos]> select * from userlist;

【server3】
这里写图片描述
【server2】
这里写图片描述
再次开启一个shell连接mysql

[kiosk@foundation40 ~]$ mysql -h 172.25.40.3 -u root -p
MySQL [(none)]> use westos
MySQL [westos]> select * from userlist;

这里写图片描述
【server1】

[root@server1 ~]# yum install -y lsof
[root@server1 ~]# lsof -i :3306

这里写图片描述
在连接mysql的shell里添加信息

MySQL [westos]> insert into userlist values ('user6','666');

通过tcpdump抓取数据分析读写分离
【server3】

[root@server3 ~]# yum install -y tcpdump
[root@server3 ~]# tcpdump -i eth0 port 3306

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值