mysql——proxy中间件的使用

11 篇文章 0 订阅

# 简介

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. 分享的同事使用proxy的目的是,因为测试环境碰到了测试/开发同学不小心全表update/delete操作,导致测试数据异常,从而影响项目进度,于是他接入mysql-proxy对sql语句进行了拦截检查,并可以将sql语句发送到DBA提供的一个sql review服务中去判断sql语句是否有问题
2. 之前还有这么一段经历,之前订单经过拆库操作,订单表分为了128个库,是根据订单号去拆库的,然而不是所有的表都有订单号(历史架构的锅),如有个需求是根据手机号码去查询订单号,导致要遍历查询128去判断是否存在,那么就需要proxy介入,当时使用的是阿里的mycat中间件

# 不足

由于加入了一层proxy会导致网络请求的增加消耗,所以性能造成一定的影响;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL-Proxy是一个用于MySQL数据库的代理服务器,它可以拦截和修改MySQL协议中的数据包,并允许你在数据包到达MySQL服务器之前或之后执行自定义操作。使用MySQL-Proxy可以实现很多有用的功能,如负载均衡、查询过滤、缓存优化等。下面介绍一下如何使用MySQL-Proxy,具体步骤如下: 1. 安装MySQL-Proxy MySQL-Proxy可以从官方网站下载,也可以使用包管理器进行安装。以Ubuntu为例,可以使用以下命令进行安装: ``` sudo apt-get install mysql-proxy ``` 2. 创建配置文件 MySQL-Proxy的配置文件为Lua脚本,需要在配置文件中指定监听端口、代理MySQL服务器的地址和端口、以及自定义的Lua脚本等。可以使用以下命令创建一个简单的配置文件: ``` sudo nano /etc/mysql-proxy.cnf ``` 然后在配置文件中添加以下内容: ``` [mysql-proxy] daemon = true proxy-address = 127.0.0.1:3306 proxy-backend-addresses = 127.0.0.1:3307 proxy-lua-script = /etc/mysql-proxy.lua ``` 其中,`proxy-address`是MySQL-Proxy监听的地址和端口,`proxy-backend-addresses`是要代理的MySQL服务器的地址和端口,`proxy-lua-script`是Lua脚本的路径。 3. 编写Lua脚本 MySQL-Proxy的Lua脚本可以拦截MySQL协议中的数据包,并对其进行修改或者过滤。可以根据实际需求编写自己的Lua脚本。以下是一个简单的例子,它会将所有的SELECT语句转换为SHOW TABLES语句: ``` function read_query(packet) if packet:byte() == proxy.COM_QUERY then if packet:sub(2, 7) == "SELECT" then local new_packet = packet:gsub("SELECT", "SHOW TABLES") proxy.queries:append(1, new_packet, {resultset_is_needed = true}) return proxy.PROXY_SEND_QUERY end end end ``` 4. 启动MySQL-Proxy 使用以下命令启动MySQL-Proxy: ``` sudo mysql-proxy --defaults-file=/etc/mysql-proxy.cnf ``` 然后就可以在客户端中连接MySQL-Proxy并进行查询了。 以上就是使用MySQL-Proxy的基本步骤。实际上,MySQL-Proxy还支持很多高级功能,如多个MySQL服务器的负载均衡、缓存优化、查询路由等,可以根据实际需求进行配置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值