如何使用MySql代理跟踪MySql查询?
我刚刚下载了mysql代理并创建了这个脚本lua(可以在mysql文档中找到): 这是我正在使用的命令行:如何使用MySql代理跟踪MySql查询?,mysql,lua,mysql-proxy,Mysql,Lua,Mysql Proxy,我刚刚下载了mysql代理并创建了这个脚本lua(可以在mysql文档中找到): 这是我正在使用的命令行: mysql-proxy -P localhost:1234 -b localhost:3306 --proxy-lua-script=profile.lua --plugins=proxy 当我运行一个简单查询(如“从表1中选择*)时,会报告此错误:“失败:。\lua scope.c:241:stat(c:…\profile.lua)失败:无错误(0)” 注意:如果我在没有lua脚本的情
mysql-proxy -P localhost:1234 -b localhost:3306 --proxy-lua-script=profile.lua --plugins=proxy
当我运行一个简单查询(如“从表1中选择*)时,会报告此错误:“失败:。\lua scope.c:241:stat(c:…\profile.lua)失败:无错误(0)”
注意:如果我在没有lua脚本的情况下运行mysql代理,则不会发生错误
我需要安装一些东西来让mysql代理和查询跟踪工作
我的环境是Windows7 Professional x64
抱歉,英语不好。您收到的错误是由--proxy lua脚本导致的,该脚本指向mysql proxy找不到的文件。要么您键入了错误的名称,要么您键入了错误的路径,要么您希望它出现在CWD中,但它不在那里。或者实际上,更仔细地看一下整个错误,似乎mysql代理本身可以在CWD中看到该文件,但其中一个底层模块不喜欢它(可能是因为mysql代理以某种方式更改了CWD?) 尝试将profile.lua保存到C:驱动器的根目录,并尝试使用不同版本的选项,如:
--proxy-lua-script=c:\profile.lua
--proxy-lua-script=\profile.lua
--proxy-lua-script=/profile.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
这很有效--代理lua script=c:\profile.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