如何使用MySql-Proxy跟踪MySql查询?

我刚刚下载了 mysql-proxy 并创建了这个 lua 脚本(在 MySQL 文档中发现):

function read_query(packet)
   if string.byte(packet) == proxy.COM_QUERY then
     print("QUERY: " .. string.sub(packet, 2))
   end
 end

这是我正在使用的命令行:

mysql-proxy -P localhost:1234 -b localhost:3306 --proxy-lua-script=profile.lua --plugins=proxy

当我运行一个简单的查询(如 "select * from table1")时,会报告这个错误:"failed: .\lua-scope.c:241: stat(C:...\profile.lua) failed: No error (0)"

注意:如果我在没有 lua 脚本的情况下运行 mysql-proxy,则不会出现错误。

我需要安装什么才能让 mysql-proxy 和查询跟踪工作?

我的环境是 Windows 7 Professional x64。

抱歉我的糟糕英语。

原文链接 https://stackoverflow.com/questions/4671777

点赞
stackoverflow用户430
stackoverflow用户430

你收到的错误是由于 --proxy-lua-script 指向 mysql-proxy 无法找到的文件所造成的。 可能是你输入了错误的文件名或路径,或者你期望它在当前工作目录中但实际上它不在那里。 或者,实际上,更仔细地查看整个错误,似乎可能是 mysql-proxy 本身在当前工作目录中看到了该文件,但是其中一个基础模块不喜欢它(可能是因为 mysql-proxy 以某种方式改变了当前工作目录?)

尝试将 profile.lua 保存到 C:驱动器的根目录中,并尝试使用不同版本的选项,例如:

--proxy-lua-script=c:\profile.lua
--proxy-lua-script=\profile.lua
--proxy-lua-script=/profile.lua

其中一个可能会起作用。

2011-03-07 20:28:08
stackoverflow用户537673
stackoverflow用户537673
简单的查询日志lua脚本:

```lua
require("mysql.tokenizer")

local fh = io.open("/var/log/mysql/proxy.query.log", "a+")
fh:setvbuf('line',4096)
local the_query = "";
local seqno = 0;

function read_query( packet )
    if string.byte(packet) == proxy.COM_QUERY then
        seqno = seqno + 1
        the_query = (string.gsub(string.gsub(string.sub(packet, 2), "%s%s*", ' '), "^%s*(.-)%s*$", "%1"))
        fh:write(string.format("%s %09d %09d : %s (%s) -- %s\n",
            os.date('%Y-%m-%d %H:%M:%S'),
            proxy.connection.server.thread_id,
            seqno,
            proxy.connection.client.username,
            proxy.connection.client.default_db,
            the_query))
        fh:flush()
        return proxy.PROXY_SEND_QUERY
    else
        query = ""
    end
end

```

2011-04-01 09:34:26