博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL Proxy
阅读量:5291 次
发布时间:2019-06-14

本文共 1154 字,大约阅读时间需要 3 分钟。

What is MySQL Proxy?

MySQL Proxy is a simple program that sits between your client and MySQL server(s) that can monitor, analyze or transform their communication. Its flexibility allows for unlimited uses; common ones include: load balancing; failover; query analysis; query filtering and modification; and many more.
可以看到,的主要作用是用来做负载均衡,读写分离的。但是需要注意的是,MySQL Proxy还有个强大的扩展功能就是支持Lua语言——魔兽也是使用了Lua来开发游戏,据我所知网易也是——可以参见。这样一种扩展,就给了我让他做别的事情的思路——防止注入攻击。
启 动MySQL Proxy的时候,加载一个Lua脚本,对每一个进入的query或者insert之类的语句做一次安全检查,甚至替换查询中的某些内容,这样在程序员的 程序中忘记了过滤参数的情况下,还有最后一道防线可用。而且由于是Lua这样的动态脚本语言,在开发,修正,部署方面都会有极大的灵活性。当然,或许会担 心性能方面的问题,那么在前面加memcached吧,或者干脆用c来写这样的扩展,毕竟MySQL Proxy是开源的,而且有清晰的接口。
MySQL Proxy提供给Lua的接口主要有以下几个函数:
connect_server() — 这个函数每次client连接的时候被调用,可以用这个函数来处理负载均衡,决定当前的请求发给那个后台的服务器,如果没有指定这个函数,那么就会采用简单的轮询机制。
read_handshake() — 这个函数在server返回初始握手信息时被调用,可以调用这个函数在验证信息发给服务器前进行额外的检查。
read_auth() — client发送验证信息给服务器的时候会调用这个函数。
read_auth_result() — 服务器验证信息返回后调用这个函数。
read_query() — 每次client发送查询请求函数的时候被调用,可以用这个函数进行查询语句的预处理,过滤掉非预期的查询等等,这个是最常用的函数。
read_query_result() — 查询结果返回是调用的函数,可以进行结果集处理。
可以看到,自由发挥之后还是有很多其它的事情可以做的。

转载于:https://www.cnblogs.com/milantgh/p/5107518.html

你可能感兴趣的文章
【BZOJ5286】[HNOI2018]转盘(线段树)
查看>>
JavaScript基础—插曲
查看>>
sqlserver where in 在 mysql
查看>>
获取手机信息
查看>>
vue购物车的实现
查看>>
Ext.Net- 数据源的绑定ComboBox
查看>>
设计模式(十三)代理模式(Proxy Pattern)
查看>>
ios键盘弹起 body的高度拉长,页面底部空白问题。ios软键盘将页面抵到上面后,关闭软键盘页面不回弹的问题。...
查看>>
[转]Android中OptionMenu的使用
查看>>
[转]Web Service Authentication
查看>>
初识HTML
查看>>
mysql locktables
查看>>
django(一)验证码
查看>>
day06 Java基础
查看>>
do...while和while...do的两种场景比较
查看>>
iOS被开发者遗忘在角落的NSException-其实它很强大
查看>>
WPF学习(1) – XAML
查看>>
集合类接口IEnumerable,IEnumerator,ICollection,IList,IDictionary理解
查看>>
Entity Framework返回IEnumerable还是IQueryable?
查看>>
零基础http代理http完美代理访问
查看>>