zoukankan      html  css  js  c++  java
  • 使用 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、其他作用:读写分离等

  • 相关阅读:
    小猫爬山
    方格取数
    Bash 脚本编程
    树链剖分学习笔记
    输入输出优化
    没有上司的舞会
    线性dp 之 麻烦的聚餐
    飞翔
    挖地雷
    The Prices
  • 原文地址:https://www.cnblogs.com/eleven24/p/10289821.html
Copyright © 2011-2022 走看看