mysql-proxy 简介

# 背景

今天同事分享的主题就是mysql-proxy,因而下来本身了解下,不求精通,只求知道这个玩意mysql

# 简介

mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可链接若干个mysql-server。sql

它使用mysql协议,任何使用mysql-client的上游无需修改任何代码,便可迁移至mysql-proxy上。后端

mysql-proxy最基本的用法,就是做为一个请求拦截,请求中转的中间层:服务器

网络

进一步的,mysql-proxy能够分析与修改请求。拦截查询和修改结果,须要经过编写Lua脚原本完成。架构

mysql-proxy容许用户指定Lua脚本对请求进行拦截,对请求进行分析与修改,它还容许用户指定Lua脚本对服务器的返回结果框架

进行修改,加入一些结果集或者去除一些结果集都可。性能

 

因此说,根本上,mysql-proxy是一个官方提供的框架,具有良好的扩展性,能够用来完成:测试

  • sql拦截与修改server

  • 性能分析与监控

  • 读写分离

  • 请求路由

 

# 用途

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

# 不足

因为加入了一层proxy会致使网络请求的增长消耗,因此性能形成必定的影响;