2011-01-12 25 views
5

Acabo de descargar el mysql-proxy y creó esta lua guión (que se encuentra en la documentación de MySQL):¿Cómo rastrear consultas MySql usando MySql-Proxy?

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

Ésta es la línea de comandos que estoy usando:

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

Cuando ejecuto una consulta simple (como "select * from table1"), se informa este error: "failed:. \ lua-scope.c: 241: stat (C: ... \ profile.lua) failed: Ningún error (0)"

Nota: Si ejecuto mysql-proxy sin script lua, no se produce ningún error.

Necesito instalar algo para que mysql-proxy y el seguimiento de consultas funcionen?

Mi entorno es Windows 7 Professional x64.

Disculpe el mal inglés.

Respuesta

7

El error que está recibiendo es causado por --proxy-lua-script que apunta a un archivo que mysql-proxy no puede encontrar. O ha escrito el nombre incorrectamente, ha escrito la ruta equivocada, o lo está esperando en su CWD y no está allí. O, en realidad, mirando el error completo un poco más de cerca, parece posible que mysql-proxy ve el archivo en CWD en sí, pero a uno de los módulos subyacentes no le gusta (posiblemente porque mysql-proxy cambia el CWD de alguna manera ?)

Intente guardar profile.lua a la raíz de la unidad C: y probar diferentes versiones de la opción, así:

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

Uno de los probablemente funcionaría

+0

¡Es trabajos! _-- proxy-lua-script = c: \ profile.lua_ ** ¡Gracias! ** – Maico

2

consulta sencilla lua registro secuencia de comandos:

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 
Cuestiones relacionadas