MySQL-Proxy简介mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可连接若干个mysql-server 。它使用mysql协议,任何使用mysql-client的上游无需修改任何代码,即可迁移至mysql-proxy上 。mysql-proxy最基本的用法,就是作为一个请求拦截,请求中转的中间层:
文章插图
进一步的,mysql-proxy可以分析与修改请求 。拦截查询和修改结果,需要通过编写Lua脚本来完成 。mysql-proxy允许用户指定Lua脚本对请求进行拦截,对请求进行分析与修改,它还允许用户指定Lua脚本对服务器的返回结果进行修改,加入一些结果集或者去除一些结果集均可 。
根本上,mysql-proxy是一个官方提供的框架,具备良好的扩展性,可以用来完成:
- sql拦截与修改
- 性能分析与监控
- 读写分离
- 请求路由
文章插图
需求
- 1台MySQL-Proxy机器,IP:192.168.1.106
- 1台MySQl主服务器(可读可写),IP:192.168.1.107
- 1台MySQL从服务器(只读),IP:192.168.1.109
mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
文章插图
重命名文件
文章插图
MySQL配置创建mysql-proxy.cnfvim mysql-proxy.cnf
[mysql-proxy]admin-username=root#admin用户名admin-password=rootadmin密码proxy-address=192.168.1.106:4040 # 代理地址proxy-backend-addresses=192.168.1.107:3306#mysql主服务器ip地址,默认端口3306proxy-read-only-backend-addresses=192.168.1.109:3306 #mysql从服务器ip地址,有多个逗号隔开 ip:port,ip:port,ip:portproxy-lua-script=/cyb/soft/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua#lua位置log-file=/cyb/soft/mysql-proxy/log/mysql-proxy.log#日志文件存储路径log-level=debugdaemon=true# mysql-proxy以守护进程方式运行keepalive=true#保持连接启动进程会有2个,一号进程用来监视二号进程
文章插图
创建log目录
文章插图
修改mysql-proxy.cnf文件的权限
chmod 660 mysql-proxy.cnf
文章插图
修改rw-splitting.lua
vim /cyb/soft/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
文章插图
文章插图
min_idle_connections:最小闲置连接数
max_idle_connections:最大闲置连接数
MySQL-Proxy启动
./mysql-proxy --defaults-file=/cyb/soft/mysql-proxy.cnf
文章插图
测试在192.168.1.106上关闭防火墙
service iptables stopchkconfig iptables off
文章插图
文章插图
演示过程中,有2次连不上,原因不明,还有待查证,目前功能是已经实现了,注意,此时连mysql-proxy的端口已经不是3306了,是4040
推荐阅读
- 最新 Redhat Enterprise Linux 8.2 系统安装图解
- Linux 中递归更改文件扩展名的命令
- Linux nohup命令详解,终端关闭程序依然可以在执行
- linux下开发基于.net的三维绘图程序
- 网络、cpu、内存、io、文件 linux下资源监控和分析工具汇总
- 数据更新删除与排序:横向对比 Python、PowerBI、Excel、MySQL
- Linux内存管理之MMU的过程
- CentOS VS Ubuntu,谁才是更好的 Linux 版本?
- STM32好找工作,所以学linux终究是错付了吗?
- 在Linux系统上使用ls命令对文件列表进行排序