MySQL Proxy处于客户端应用程序和MySQL服务器之间,通过截断、改变并转发客户端和后端数据库之间的通信来实现其功能,这和WinGate之类的网络代理服务器的基本思想是一样的。代理服务器是和TCP/IP协议打交道,而要理解MySQL Proxy的工作机制,同样要清楚MySQL客户端和服务器之间的通信协议,MySQL Protocol包括认证和查询两个基本过程:

认证过程包括:

客户端向服务器发起连接请求

服务器向客户端发送握手信息

客户端向服务器发送认证请求

服务器向客户端发送认证结果

如果认证通过,则进入查询过程:

客户端向服务器发起查询请求

服务器向客户端返回查询结果

当然,这只是一个粗略的描述,每个过程中发送的包都是有固定格式的,想详细了解MySQL Protocol的同学,可以去这里看看。MySQL Proxy要做的,就是介入协议的各个过程。首先MySQL Proxy以服务器的身份接受客户端请求,根据配置对这些请求进行分析处理,然后以客户端的身份转发给相应的后端数据库服务器,再接受服务器的信息,返回给客户端。所以MySQL Proxy需要同时实现客户端和服务器的协议。由于要对客户端发送过来的SQL语句进行分析,还需要包含一个SQL解析器。可以说MySQL Proxy相当于一个轻量级的MySQL了,实际上,MySQL Proxy的admin server是可以接受SQL来查询状态信息的。

MySQL Proxy通过lua脚本来控制连接转发的机制。主要的函数都是配合MySQL Protocol各个过程的,这一点从函数名上就能看出来:

connect_server()

read_handshake()

read_auth()

read_auth_result()

read_query()

read_query_result()

至于为什么采用lua脚本语言,我想这是因为MySQL Proxy中采用了wormhole存储引擎的关系吧,这个虫洞存储引擎很有意思,数据的存储格式就是一段lua脚本,真是创意无限啊。

分享到:

2008-11-13 11:41

浏览 1332

评论

mysql的proxy机制_MySQL Proxy工作机制浅析相关推荐

  1. 简述 RPF机制,PIM-DM工作机制,PIM-SM工作机制

    RPF机制,PIM-DM工作机制,PIM-SM工作机制 一.组播的RPF机制 路由器在接收到由源S 向组播组G 发送的组播报文后,首先查找组播转发表. 如果存在对应(S,G)表项,且该组播报文实际到达 ...

  2. mysql内存工作机制_MySQL内存使用机制

    对于任何一个数据库管理系统来说,内存的分配使用绝对可以算的上是其核心之一了,所以很多希望更为深入了解某数据库管理系统的人,都会希望一窥究竟,我也不例外. 从内存的使用方式MySQL 数据库的内存使用主 ...

  3. mysql内存机制_MySQL内存管理机制

    1. BufferPool What is BufferPool? MySQL InnoDB Buffer Pool,MySQL InnoDB 缓冲池.里面缓存着大量数据(数据页),使 CPU 读取或 ...

  4. mysql 写锁和读锁_mysql的封锁机制以及读锁和写锁的区别

    我们在开发中也许都有感受到,数据库的并发操作会带来许多问题,比如丢失更新.不可重复读.读脏数据(幽灵数据)等等,常见的比如自动售票系统,站点1.2同时读出剩余的票数n张,站点1售出一张票,并将n-1写 ...

  5. oracle select机制_ORACLE的工作机制(转载)

    专用服务器模式下:一种方式是监听进程接收到用户进程请求后,产生一个新的专用服务器进程,并且将对用户进程的所有控制信息传给此服务器进程,也就是说新建的服务器进程继承了监听进程的信息,然后服务器进程给用户 ...

  6. mysql的原理图解_MySQL排序工作原理

    在程序设计当中,我们很多场景下都会用 group by 关键字.比如在分页读取数据时,为了避免重复扫描记录,这就是必须要使用 group by 了. 比如我们使用如下 DDL 创建表: CREATET ...

  7. Yarn基本架构和工作机制

    Yarn基本架构和工作机制 概念 Yarn基本架构 ResourceManager (RM)作用 NodeManager (NM)作用 ApplicationMaster (AM)作用 contain ...

  8. ReduceTask工作机制

    ReduceTask工作机制图示 ReduceTask工作机制流程 1. Copy阶段 ReduceTask从各个MapTask上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定阈值,则写到磁盘 ...

  9. MapTask的工作机制

    MapTask工作机制图示 MapTask工作机制流程 1. Read阶段 MapTask通过用户编写的RecordReader,从输入InputSplit中解析出key/value. 2. Map阶 ...

最新文章

  1. python 信息检索,python信息检索代码_信息检索_倒排记录表合并算法实现(python)...
  2. 继穿越火线后的又一传奇:Final Approach
  3. java openssl库,Java的OpenSSL
  4. hive读取hdfs存放文件_Hive基本概念
  5. VTK:图像迭代器用法实战
  6. linux获取ip地址的接口,在Linux上获取接口的IP地址
  7. mysql sum_MySQL中的SUM函数使用教程
  8. python可变参数和关键字参数位置_python笔记——函数的参数(位置参数、默认参数、可变参数、关键字参数、命名关键字参数、参数组合)...
  9. vue中使用window.open会在url前自动添加本地服务器的地址bug修复
  10. Python深度学习:常见优化算法
  11. 4G无线预付费电表系统设计及其应用
  12. IEC61850 协议分析
  13. 虚拟滚动实现(Vue)
  14. 管理Linkedin账号三步曲,高效管理领英账号。
  15. 怎么压缩PDF文件大小?分享几个压缩文件的方法
  16. SPI—读写串行FLASH(时序中的无关项)
  17. android 基础培训ppt,Android基础之内部培训.ppt
  18. 微信自定义菜单以及消息and事件通知
  19. 金庸群侠传 Windows版:用 Object Pascal 和 SDL 实现的 DOS 游戏《金庸群侠传》的重制版
  20. web网页设计实例作业 ——茶叶文化-适应响应(12页) 学生HTML个人网页作业作品下载

热门文章

  1. 诚聘英才,共创未来!华南农业大学农学院高层次人才招聘
  2. NC:王金锋等揭示阴道菌群异位对子宫健康的影响
  3. MPB:南京​湖泊所王建军组-​群落构建过程的定量指标——扩散-生态位连续体指数...
  4. 宏基因组公众号创立初衷及如何注册一个名字好记的公众号
  5. Nature:如何做一篇肠道菌群免疫的顶级文章
  6. 16s扩增子分析注意事项和经验总结Tips
  7. pandas基于条件判断更新dataframe中所有数据列数值内容的值(Conditionally updating all values in pandas Dataframe )
  8. R语言使用skimr包的skim函数查看整个dataframe数据集的summary信息、统计汇总信息(Summarize a whole dataset)
  9. 为多模型寻找模型最优参数、多模型交叉验证、可视化、指标计算、多模型对比可视化(系数图、误差图、混淆矩阵、校正曲线、ROC曲线、AUC、Accuracy、特异度、灵敏度、PPV、NPV)、结果数据保存
  10. pandas将dataframe数据列中的年、月、日列组合成单一的日期数据列实战