原文:http://www.ningoo.net/html/2008/how_mysql_proxy_works.html
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脚本,真是创意无限啊。
相关推荐
MySQL Proxy 实现负载均衡测试 MySQL Proxy 实现负载均衡测试
mysql proxy搭建 mysql proxy 搭建实验文档,测试可使用
mysql-proxy-0.8.5-windows-x86-32bit. 官网下载挺麻烦的,直接下载下来备份。 mysql proxy for windows
实现mysql读写分离。 forking socket模型。
mysql-proxy 架构 读写分离的基本文档 目前可以部署使用
windows++mysql-proxy全部数据包 mysql代理
使用mysql-proxy实现mysql读写分离
NULL 博文链接:https://zhaoshijie.iteye.com/blog/1969432
mysql-proxy(mysql代理).txt 主要是配置 linux 环境下mysql的代理设置功能
安装mysql-proxy所需工具
根据网上的资源,自己也跟着测试了一番,还有些问题,请见谅!
Mysql Proxy 实现mysql读写分离.pdf
此文档中详细记载了,mysql proxy问题的解决方法,希望可以帮助到你!
MySQL Proxy应用入门 1 安装MySQL Proxy MySQL Proxy应用入门 2 MySQL Proxy配置选项 MySQL Proxy应用入门 3 使用MySQL Proxy MySQL UDF Mysql Proxy安装配置测 MySQL5 5 Semi synchronous Replication(半同步复制...
mysqlproxy笔记mysqlproxy笔记
mysql proxy 教程
主要用于mysql读写分离,减少磁盘io,起到负载均衡的作用
一、mysql-proxy场景说明 MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测、分析或改变它们的通信。它使用灵活,没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和...
1. [root@bogon ~]# yum -y install gcc* gcc-c++* autoconf* automake* zlib* libxml
MysqlProxy实现mysql读写分离[整理].pdf