mysql x_MySQL X协议分析

这篇文章从分析MySQL X这个插件的协议层, 包括两方面内容:protobuf消息的具体定义,及这些消息到SQL语句的映射。MySQL X简介MySQL X 是MySQL 5.7发布时自带的一个插件,启用后,即可通过 X Protocol 协议提供一个非常类似MongoDB的服务。在Unix/Linux环境下,加载这个插件的命令是:INSTALL PLUGIN mysqlx SONAME 'my...
摘要由CSDN通过智能技术生成

这篇文章从分析MySQL X这个插件的协议层, 包括两方面内容:protobuf消息的具体定义,及这些消息到SQL语句的映射。

MySQL X简介

MySQL X 是MySQL 5.7发布时自带的一个插件,启用后,即可通过 X Protocol 协议提供一个非常类似MongoDB的服务。在Unix/Linux环境下,加载这个插件的命令是:

INSTALL PLUGIN mysqlx SONAME 'mysqlx.so';

后续的配置,可以参考这里。

对应地,客户端程序称为 MySQL Shell , 在这里可以下载。

服务端的这个插件在收到请求之后,会将其翻译为对应的SQL语句,然后转交给MySQL主服务执行,并将结果集返回给客户端。

消息协议

消息协议定义在 MySQL 5.7 源码树的rapid/plugin/x/protocol目录下,包括连接管理、会话管理、CRUD等各种类型。需要注意的是,这些文件中定义了多个不同名的包,因此在Golang中,是无法使用的,还需要做一些包括建立子目录、更改包名等在内的微小处理。消息本身的文档在这里。

然而文档并不涵盖所有的细节,因此,我们写一个抓包并打印消息内容的工具,来帮助我们调试这个协议。项目在这里。

消息映射到SQL

管理员命令 ,在rapid/plugin/x/src/{admin_cmd_handler.h,admin_cmd_handler.cc}中。

ping,直接返回OK消息;

list_clients,返回4个column metadataÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值