
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
mysql-proxy的数据库中重要的中间件架构的原理到底是怎么样的呢?昆明达内小编昨天看了mysql-proxy的数据库这部分的内容,下面就跟大家聊聊把,我会从mysql-proxy架构与原理,mysql-proxy的基本知识,
1、mysql-proxy架构与原理
如“简介”中所述,mysql-proxy向用户提供了6个hook点,让用户实现Lua脚本来完成各种功能,达内科技小编认为这些hook点是以函数的形式提供的,用户可以实现这些函数,在不同事件、不同操作发生时,做我们期望的事情,mysql-proxy典型应用这几个部分一一和大家分享。
connect_server()
mysql-client向proxy发起连接时,proxy会调用这个函数。用户可以实现该函数,来做一些负载均衡的事情,例如选择将要连向那个mysql-server。假设有多个mysql-server后端,而用户又没有实现这个函数,proxy默认采用轮询(round-robin)策略。
2、mysql-proxy简介
mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可连接若干个mysql-server。
它使用mysql协议,任何使用mysql-client的上游无需修改任何代码,即可迁移至mysql-proxy上。
mysql-proxy最基本的用法,就是作为一个请求拦截,请求中转的中间层:
3、mysql-proxy典型应用
案例一:sql时间统计分析
假设mysql-client提交的原sql为:
XYZ;
proxy可以在read_query()里将其改写为:
SELECT NOW();
XYZ;
SELECT NOW();
这样在返回结果集时,就可以在应用层对sql时间进行记录,以方便统计分析。
案例二:sql性能统计分析
假设mysql-client提交的原sql为:
XYZ;
proxy可以在read_query()里将其改写为:
XYZ;
EXPLAIN XYZ;
这样在返回结果集时,就可以在应用层对sql性能进行记录,以方便统计分析。
达内培训小编需要强调的是,这两个案例,由于proxy在read_query()时对sql进行了改写,故在read_query_result()时,mysql-server其实返回了比原请求更多的信息,proxy一定要将多余的信息去掉,再返回mysql-client。多说一句,可以加入一个唯一ID,来对请求sql和返回结果进行配对。
更多it培训热讯,请关注昆明达内科技!