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

一·简介

当今MySQL使用相当广泛,随着用户的增多以及数据量的增大,高并发随之而来。然而我们有很多办法可以缓解数据库的压力。分布式数据库、负载均衡、读写分离、增加缓存服务器等等。这里我们将采用读写分离技术进展缓解数据库的压力。

其中实现读写分离的技术有很多方法,这里我们将采用mysql-proxy这个中间软件来实现。这个软件中含有一个读写分离的lua文件,这也是我们使用mysql-proxy实现读写分离必用的文件,它需要lua解析器进行解析。因此我们还需要安装一个lua解析器。

这里写图片描述

二·实验环境:

【server1 master 172.25.41.1】
【server2 slave 172.25.41.2 】
【server3 proxy 172.25.41.3】

做实验前【server1】和【server2】需要搭建简单的主从复制

server3 proxy

[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 ~]# cd /usr/local/mysql-proxy
[root@server3 mysql-proxy]# mkdir conf
[root@server3 mysql-proxy]# cd conf/
[root@server3 conf]# cd ..
[root@server3 mysql-proxy]# cd bin
[root@server3 bin]# vim ~/.bash_profile   #修改环境变量
[root@server3 bin]# source ~/.bash_profile 

这里写图片描述

[root@server3 bin]# ls
mysql-binlog-dump  mysql-myisam-dump  mysql-proxy
[root@server3 bin]# cd ..
[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 

这里写图片描述

[root@server3 mysql-proxy]# cd /usr/local/mysql-proxy/conf/
[root@server3 conf]# vim mysql-proxy.conf    #添加以下内容
[mysql-proxy]
user=root
proxy-address=0.0.0.0:3306
proxy-backend-addresses=172.25.41.1:3306
proxy-read-only-backend-addresses=172.25.41.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]# cd ..
[root@server3 mysql-proxy]# mkdir logs
[root@server3 mysql-proxy]# ls
[root@server3 mysql-proxy]# mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf 
[root@server3 mysql-proxy]# ps ax
[root@server3 mysql-proxy]# netstat -antlp   #查看端口

这里写图片描述

远程连接

需要在master上授权

[root@server1 ~]# mysql -p
mysql> grant all privileges on *.* to root@'%' identified by 'Redhat!123';

授权成功后再去远程连接

[root@foundation41 kiosk]# mysql -h 172.25.41.3 -u root -p

这里写图片描述

在master下载lsof

[root@server1 ~]# yum install -y lsof
[root@server1 ~]# lsof -i :3306  #查看3306端口连接的主机

(1)远程连接一台
这里写图片描述
(2)远程连接两台
这里写图片描述
(3)远程连接三台
这里写图片描述

测试

远程连接中添加信息
这里写图片描述
查看
这里写图片描述

抓包

[root@server3 conf]# yum install -y tcpdump
[root@server3 conf]# tcpdump -i eth0 port 3306    #会卡住,在远程连接中添加信息

这里写图片描述

MySQL [test]> insert into userlist values ('user5','222');    #添加信息
#再次返回查看时,就会有信息

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值