使用 mysql-proxy 监听 mysql 查询
什么是 mysql-proxy?
mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可连接若干个mysql-server。
它使用mysql协议,任何使用mysql-client的上游无需修改任何代码,即可迁移至mysql-proxy上。
mysql-proxy最基本的用法,就是作为一个请求拦截,请求中转的中间层:
进一步的,mysql-proxy可以分析与修改请求。拦截查询和修改结果,需要通过编写Lua脚本来完成。
mysql-proxy允许用户指定Lua脚本对请求进行拦截,对请求进行分析与修改,它还允许用户指定Lua脚本对服务器的返回结果
进行修改,加入一些结果集或者去除一些结果集均可。
所以说,根本上,mysql-proxy是一个官方提供的框架,具备良好的扩展性,可以用来完成:
sql拦截与修改
性能分析与监控
读写分离
请求路由
使用方法
1、下载 mysql-proxy
https://github.com/mysql/mysql-proxy/releases
2、解压后进入 mysql-proxy 目录
我们可以使用 mysql-proxy --help-all 查看帮助

3、下载的安装包里面包含了一些可用的 lua 脚本,我们下面以监听查询时间为例子启动并监听本地 mysql
可用的一些 lua 脚本:

php 测试文件(进行一个简单的 mysql 查询,然后我们可以在监听的终端看到查询语句以及查询时间输出)

启动 mysql-proxy 并监听查询时间

运行了 php 文件之后,我们可以看到如上图的输出。(本地建立了一个 名字为 proxy 的数据库,里面有一个名字为 proxy 的表)
更新:上图的 --lua-path 参数要去掉,下图监听 prepare statement,同时监听远程数据库

监听远程的 sql 查询:指定 --proxy-backend-addresses=127.0.0.1:3306 参数,具体根据实际修改,本地还是连接 127.0.0.1:4040
3、测试到此为止了,本人是打算将其用于项目 sql 监控,在进行 查询 性能分析的时候会比较方便。
4、其他作用:读写分离等
使用 mysql-proxy 监听 mysql 查询的更多相关文章
- 监听mysql是否挂了
监听mysql是否挂了,如果挂了就重启mysql 方式一: #!/bin/bash pgrep -x mysqld &> /dev/null if [ $? -ne 0 ] then e ...
- 20180530利用Maxwell组件实时监听Mysql的binlog日志
转自:https://blog.csdn.net/qq_30921461/article/details/78320750 http://kafka.apache.org/quickstart htt ...
- MySQL实时监听——EPX 原创: 奕X 贝壳产品技术 今天
MySQL实时监听——EPX 原创: 奕X 贝壳产品技术 今天
- 实时监听 mysql 操作,Linux 版
效果 场景:某数据库新增了某条记录,服务器可以监听到变化的数据与操作,如 增加一条记录: id = 1009,name=''test,number = 11 服务器监听结果: 实现过程 测试过程:数据 ...
- 监听MySQL的binlog日志工具分析:Canal
Canal是阿里巴巴旗下的一款开源项目,利用Java开发.主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费,目前主要支持MySQL. GitHub地址:https://github. ...
- Canal监听mysql
安装mysql5.7,并开启binlog 安装mysql 开启binlog find / -name my.cnf 找到这个文件 添加几行 [mysqld] log-bin=mysql-bin # 开 ...
- Canal 实战 | 第一篇:SpringBoot 整合 Canal + RabbitMQ 实现监听 MySQL 数据库同步更新 Redis 缓存
一. Canal 简介 canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同 ...
- Proxy监听对象的数据变化,处理绑定数据很有用
Proxy可以监听对象身上发生了什么事情,并在这些事情发生后执行一些相应的操作.一下子让我们对一个对象有了很强的追踪能力,同时在数据绑定方面也很有用处. }; //interceptor 拦截 var ...
- angular6 监听url查询参数变化刷新页面
快照snapshot取到的参数是组件第一次渲染时候的参数,当我们在页面中需要根据不同的url查询参数显示不同的内容时,快照就不能满足我们的需要了,这时候就要用ActivatedRoute服务的quer ...
随机推荐
- Linux(Contos7.5)环境搭建之Gitblit安装(三)
1.yum安装git(这一步暂时不清楚是否必要,因为在window上搭建并不需要)
- js 的filter()方法
filter()方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组. filter()基本语法: arr.filter(callback[, thisArg]) filter() ...
- Scrum Meeting 11.07
成员 今日任务 明日计划 用时 徐越 赵庶宏 薄霖 卞忠昊 JOSN数据解析 WebView和JavaScript交互基础 3h 武鑫 设计界面:独立完成一些简 ...
- 《Spring1之第四次站立会议》
<第四次站立会议> 昨天:我把小组成员找到的写关于登录界面的代码加到了我的项目工程里,并对它有了一定的了解,已经能够编译运行了,得到了登陆的界面: 今天:试着做了一下主框架里的在线人数的显 ...
- hihocoder #1388 : Periodic Signal fft
题目链接: https://hihocoder.com/problemset/problem/1388 Periodic Signal 时间限制:5000ms内存限制:256MB 问题描述 Profe ...
- Reaction to 构造之法 of Software Engineering From The First Chapter toThe Fifth Chapter(补充版)
几个星期前,我阅读过一篇文章,一位老师教导自己的学生要积极地去阅读文学文献,其中,我很欣赏他的一句话:“Just think of liturature as if you're reading a ...
- Request[""]接收的值有逗号(,)
这是因为你的前台页面有连个标签的name值相等导致的.Request["name"]其实是通过name值或得标签的value值的. 所以一般情况下name值不要相等. 需要互斥的就 ...
- 【CSAPP笔记】1. 位、字节、整型
<Computer Systems a Programmer's Perspective>,机械工业出版社.中文译名<深入理解计算机系统>.作者:(美)Randal E.Bry ...
- 001_JavaWeb之Servlet的路径映射问题
001_JavaWeb之Servlet的路径映射问题 在web.xml中写入: <servlet> <servlet-name>DeleteStudent</servle ...
- 浏览器播放rtmp流
我是利用flash插件实现的,需要以下几个文件: flowplayer-3.2.8.min.js flowplayer-3.2.18.swf flowplayer.rtmp-3.2.8.swf flo ...