如何编写一个,实现自定义支持MySQL协议的SQL中间件?

2026-04-27 21:568阅读0评论建站教程
  • 内容介绍
  • 文章标签
  • 相关推荐
使用python实现自定义支持mysql协议的SQL
中间件

原理比较简单, 就是加个中间件, 让业务连接中间件, 由中 我CPU干烧了。 间件去转发业务数据报, 若遇到需要 的SQL,顺便 下即可.

:为啥要搞这个玩意儿?

哎,说实话,搞这个东西挺麻烦的。但有时候没办法啊! 比如你有个老系统,用的MySQL,现在想换成别的数据库,单是改代码成本太高了! 又或着你想在SQL施行之前Zuo一些校验、脱敏、审计之类的操作。 太魔幻了。 这时候,一个嫩透明拦截并修改SQL的中间件就显得忒别重要了。 而且我跟你说有些“定制的需求”,找原厂的话流程太慢,而且大概率不会去实现。那咋办呢? 自己动手丰衣足食呗!

MySQL协议是个啥?

先说说得了解MySQL协议是怎么回事儿。这玩意儿其实就是客户端和服务器之间通信的规则。 简单来说就是定义了数据的格式、命令的类型等等。 如guo你不熟悉的话,建议先去官方文档堪堪 也有相关记录,我爱我家。。

抓包分析:知己知彼

抓包是干仁和网络相关的活儿者阝绕不开的一步。 我用Wireshark抓了一段包,后来啊如下:,我明白了。

包类型 描述 大小
Pack Header 包头 4字节
Payload 包体 根据内容不同而变化
COM_QUERY SQL语句包 根据语句长度变化

mysql的数据包格式为: pack_headr+payload

COM_QUERY 包结构详解

走捷径。 而我们本次需要 的则是SQL包, 对应为: COM_QUERY。

阅读全文
使用python实现自定义支持mysql协议的SQL
中间件

原理比较简单, 就是加个中间件, 让业务连接中间件, 由中 我CPU干烧了。 间件去转发业务数据报, 若遇到需要 的SQL,顺便 下即可.

:为啥要搞这个玩意儿?

哎,说实话,搞这个东西挺麻烦的。但有时候没办法啊! 比如你有个老系统,用的MySQL,现在想换成别的数据库,单是改代码成本太高了! 又或着你想在SQL施行之前Zuo一些校验、脱敏、审计之类的操作。 太魔幻了。 这时候,一个嫩透明拦截并修改SQL的中间件就显得忒别重要了。 而且我跟你说有些“定制的需求”,找原厂的话流程太慢,而且大概率不会去实现。那咋办呢? 自己动手丰衣足食呗!

MySQL协议是个啥?

先说说得了解MySQL协议是怎么回事儿。这玩意儿其实就是客户端和服务器之间通信的规则。 简单来说就是定义了数据的格式、命令的类型等等。 如guo你不熟悉的话,建议先去官方文档堪堪 也有相关记录,我爱我家。。

抓包分析:知己知彼

抓包是干仁和网络相关的活儿者阝绕不开的一步。 我用Wireshark抓了一段包,后来啊如下:,我明白了。

包类型 描述 大小
Pack Header 包头 4字节
Payload 包体 根据内容不同而变化
COM_QUERY SQL语句包 根据语句长度变化

mysql的数据包格式为: pack_headr+payload

COM_QUERY 包结构详解

走捷径。 而我们本次需要 的则是SQL包, 对应为: COM_QUERY。

阅读全文