mysql-proxy读写分离

mysql-proxy读写分离配置

配置环境
master机:server1(172.25.254.1)
slave机:server2(172.25.254.2)
调度器:server3(172.25.254.3)

mysql-proxy简介

  1. mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等

  2. MySQL Proxy就是这么一个中间层代理,简单的说,MySQL
    Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,

  3. 从而实现读写分离和负载平衡。对于应用来说,MySQL Proxy是完全透明的,应用则只需要连接到MySQL Proxy的监听端口即可。

  4. 当然,这样proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为冗余,在应用服务器的连接池配置中配置到多个proxy的连接参数即可。

mysql proxy的连接池

  • 对于程序端而言,web端的请求,只要到mysql proxy的连接池就OK了,剩下的工作就交给mysql
    proxy了。对于程序代码管理来说就简单多了。个人觉得这一点最值得借用的了。

这里写图片描述

首先server1和server2配置主从复制,已经写过了,不会的可以去下面的地址查看。

主从复制配置
https://blog.csdn.net/su_use/article/details/81488043

安装读写分离代理mysql-proxy

[root@server3 ~]# tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
[root@server3 ~]# ls
mysql-proxy-0.8.5-linux-el6-x86-64bit  mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz 
[root@server3 ~]# rm -rf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
[root@server3 ~]# ls
mysql-proxy-0.8.5-linux-el6-x86-64bit 
[root@server3 ~]# mv mysql-proxy-0.8.5-linux-el6-x86-64bit/ /usr/local/
[root@server3 local]# ln -s mysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy

新建目录

[root@server3 local]# cd mysql-proxy
[root@server3 mysql-proxy]# ls
bin  include  lib  libexec  licenses  share
[root@server3 mysql-proxy]# mkdir conf
[root@server3 mysql-proxy]# mkdir logs
[root@server3 mysql-proxy]# vim conf/mysql-proxy.conf

编写配置文件

vim conf/mysql-proxy.conf
----
[mysql-proxy]
user=root
#admin-username=proxy
#admin-password=ssH+101010
proxy-address=172.25.5.3:3306
proxy-read-only-backend-addresses=172.25.5.2
proxy-backend-addresses=172.25.5.1
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
#admin-lua-script=/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log
log-level=debug
daemon=true
keepalive=true

---
[mysql-proxy]

user=root 
#运行mysql-proxy用户
admin-username=proxy 
#主从mysql共有的用户
admin-password=123.com 
#用户的密码
proxy-address=172.25.5.3:3306 
#mysql-proxy运行ip和端口,不加端口,默认4040
proxy-read-only-backend-addresses=172.25.5.2
#指定后端从slave读取数据
proxy-backend-addresses=172.25.5.3
#指定后端主master写入数据
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua 
#指定读写分离配置文件位置
admin-lua-script=/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua
#指定管理脚本
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log 
#日志位置
log-level=info 
#定义log日志级别,由高到低分别有(error|warning|info|message|debug)
daemon=true    
#以守护进程方式运行
keepalive=true 
#mysql-proxy崩溃时,尝试重启

修改lua脚本

[root@server3 mysql-proxy]# vim share/doc/mysql-proxy/rw-splitting.lua
----
  if not proxy.global.config.rwsplit then
          proxy.global.config.rwsplit = {
                  min_idle_connections = 1,
                  max_idle_connections = 1,  #触发读写分离的最大连接数

                  is_debug = false
          }
  end
  ---

mysql 受权proxy用户(master和slave都要有,主从复制后,master授权,slave也会自动授权。)

grant all on *.* to proxy@'172.25.5.%' indentified by 'ssH+101010';

启动mysql-proxy

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

这里写图片描述

检测:登陆

这里写图片描述

插入数据:

这里写图片描述

master查看:

这里写图片描述

slave查看:

这里写图片描述

这里写图片描述

再连接一个客户端,就会触发读写分离,

这里写图片描述

proxy(自动弹出的)

这里写图片描述

mysql-proxy的admin模块

配置文件
[root@server3 mysql-proxy]# vim conf/mysql-proxy.conf 
---
[mysql-proxy]
[mysql-proxy]
user=root
admin-username=admin
admin-password=ssH+101010
proxy-address=172.25.5.3:3306
proxy-read-only-backend-addresses=172.25.5.2
proxy-backend-addresses=172.25.5.1
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
admin-lua-script=/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log
log-level=debug
daemon=true
keepalive=true

打开mysql-proxy:

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

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值