`

MySQL Proxy工作机制浅析

阅读更多

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

认证过程包括:

  1. 客户端向服务器发起连接请求
  2. 服务器向客户端发送握手信息
  3. 客户端向服务器发送认证请求
  4. 服务器向客户端发送认证结果

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

  1. 客户端向服务器发起查询请求
  2. 服务器向客户端返回查询结果

当然,这只是一个粗略的描述,每个过程中发送的包都是有固定格式的,想详细了解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 社区开发的开源工具,它作为一个轻量级的中间层服务,...

    MySQL Proxy 说明与配置

    **MySQL Proxy的基本工作原理** MySQL Proxy 作为一个中间件,接收来自客户端的SQL查询,然后将这些请求转发到实际的MySQL服务器。在这个过程中,你可以通过Lua脚本拦截并处理这些请求,例如,增加日志记录、性能...

    mysql-proxy-0.8.5-windows-x86-32bit

    MySQL Proxy 是一个开源工具,由 MySQL AB 公司开发,允许用户在 MySQL 客户端和服务器之间插入一个代理层。这个代理层可以用来监控、分析或者修改通信数据,为数据库管理提供了一种灵活的解决方案。`mysql-proxy-...

    mysql-proxy

    MySQL Proxy是一款轻量级的开源工具,主要用于MySQL数据库的读写分离、IO优化以及实现一定的负载均衡。在大型系统中,数据库通常是性能瓶颈的关键因素,MySQL Proxy的出现就是为了缓解这一问题,提高系统的整体效率...

    windows++mysql-proxy全部数据包

    在IT领域,数据库管理和网络通信是至关重要的环节,而MySQL Proxy作为一款开源工具,为数据库管理提供了更多灵活性和控制权。本资料包“windows++mysql-proxy全部数据包”显然是针对Windows平台的MySQL Proxy安装和...

    mysql配置mysql-proxy读写分离1

    MySQL Proxy 是一个开源工具,它允许你在 MySQL 客户端和服务器之间设置一个代理层,以便实现诸如负载均衡、故障切换、读写分离等高级功能。在这个场景中,我们将讨论如何配置 MySQL Proxy 来实现读写分离,以提高...

    mysql proxy

    MySQL Proxy 是一个轻量级的中间件,它作为数据库客户端和MySQL服务器之间的代理,提供了一系列的优势和功能。MySQL Proxy 的主要优点在于其灵活性和透明性,它可以无感知地插入到应用和数据库之间,使得对数据库的...

    mysql-proxy 安装配置

    MySQL Proxy 是一个开源工具,它允许用户在 MySQL 客户端和服务器之间插入一个代理层,从而实现诸如负载均衡、故障切换、读写分离等高级功能。以下是对MySQL Proxy安装配置及其相关知识点的详细说明: 1. **安装...

    安装mysql-proxy所需工具

    安装完成后,通过简单的连接测试确保MySQL Proxy正常工作。同时,考虑使用日志记录和监控工具,如syslog和Prometheus,以跟踪其运行状态和性能。 10. **安全注意事项**: 在生产环境中,确保对MySQL Proxy进行...

    mysql proxy问题的解决方法

    总结,解决 MySQL Proxy 问题的关键在于理解其工作原理,检查和调整相关配置,以及在必要时对源代码进行修改。通过以上的方法,你可以有效地处理连接问题、字符编码问题,以及稳定性问题,提升 MySQL Proxy 的使用...

    python 开发的mysql proxy : angel proxy

    标题中的“Python开发的MySQL Proxy:Angel Proxy”指的是一个用Python编程语言编写的数据库中间件,它的主要功能是实现MySQL数据库的读写分离。在大型系统中,为了提高数据库的性能和可扩展性,通常会采用读写分离...

    MySQL Proxy 快速实现读写分离以及负载均衡

    ### MySQL Proxy 快速实现读写分离以及负载均衡 ...MySQL Proxy 作为一款强大的中间件工具,极大地简化了数据库集群的管理和维护工作。对于需要高可用性和高性能的系统来说,MySQL Proxy 是一个不可或缺的选择。

    使用mysql-proxy实现mysql读写分离

    4. **配置mysql-proxy**:通过命令行指定mysql-proxy的工作参数,例如主库和从库的地址、端口等。 ```bash /usr/local/mysql-proxy/sbin/mysql-proxy --proxy-backend-addresses=192.168.1.201:3306 --proxy-...

    Mysql Proxy 实现mysql读写分离.pdf

    4. 安装 mysql-proxy:将下载的 mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz 解压到 /opt/mysql-proxy 目录下,设置环境变量:export PATH=$PATH:/opt/mysql-proxy/mysql-proxy-0.8.5/bin 读写分离配置: 1. ...

    MySQL-Proxy

    ### MySQL-Proxy 主从复制与读写分离搭建详解 #### 一、MySQL-Proxy简介 MySQL-Proxy 是一个轻量级的代理服务器,用于在客户端应用程序和 MySQL 服务器之间建立一层中间层。它能够实现诸如负载均衡、读写分离、...

    MysqlProxy实现mysql读写分离[整理].pdf

    3. **工作原理**:当客户端连接到 MySQL Proxy 时,代理服务器会根据 Lua 脚本中的规则决定将请求转发给主库还是从库。例如,`rw-splitting.lua` 是一个常用的读写分离配置脚本,通过设置 `min_idle_connections` 和...

    数据库集群中间件MySQL Proxy探讨.pdf

    总的来说,MySQL Proxy是应对互联网时代大数据处理挑战的有效工具,它通过读写分离、数据库复制和连接池等机制,提升了数据库的性能和可靠性。结合中间件和Lua语言的优势,MySQL Proxy为数据库集群提供了灵活、高效...

    mysql proxy 教程

    ### MySQL Proxy 教程知识点详解 #### 一、MySQL Proxy 概述 - **定义**:MySQL Proxy 是一个中间件程序,它位于客户端应用程序与 MySQL 服务器之间,用于转发 SQL 查询,并提供额外的功能如负载均衡、连接管理...

    mysql-proxy安装部署.docx

    MySQL Proxy 是一个开源工具,它充当了一个中间层,允许用户在 MySQL 服务器和客户端之间进行数据传输时添加自定义逻辑。这个代理程序基于网络协议,因此它可以与任何标准的 MySQL 客户端无缝配合,无需对客户端代码...

Global site tag (gtag.js) - Google Analytics