Как отслеживать MySql-запросы, используя MySql-Proxy? - PullRequest
5 голосов
/ 12 января 2011

Я только что скачал 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) : Нет ошибок (0) "

Примечание. Если я запускаю mysql-proxy без сценария lua, ошибки не возникает.

Мне нужно что-то установить, чтобы MySQL-прокси и трассировка запросов работали?

Моя среда - Windows 7 Professional x64.

Извините за плохой английский.

Ответы [ 2 ]

7 голосов
/ 07 марта 2011

Ошибка, которую вы получаете, вызвана --proxy-lua-script, указывающим на файл, который не может найти mysql-proxy.Либо вы ввели неверное имя, либо неверный путь, либо ожидаете его в CWD, а его там нет.Или, на самом деле, если присмотреться ко всей ошибке чуть более подробно, кажется возможным, что mysql-proxy сам видит файл в CWD сам, ОК, но один из базовых модулей не любит его (возможно, потому что mysql-proxy меняет CWD как-то?)

Попробуйте сохранить файл profile.lua в корне диска C: и попробуйте разные версии опции, например, так:

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

Одна из них, вероятно, будет работать

2 голосов
/ 01 апреля 2011

скрипт 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
...