2011-01-12 29 views
5

Tôi chỉ cần tải mysql-proxy và tạo kịch bản lua này (tìm thấy trong tài liệu Mysql):Làm thế nào để theo dõi các truy vấn MySql bằng MySql-Proxy?

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

Đây là dòng lệnh Tôi đang sử dụng:

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

Khi tôi chạy một truy vấn đơn giản (như "select * from table1"), lỗi này được báo cáo: "failed:. \ lua-scope.c: 241: stat (C: ... \ profile.lua) không thành công: Không có lỗi (0)"

Lưu ý: Nếu tôi chạy mysql-proxy mà không có lua script, không có lỗi xảy ra.

Tôi cần phải cài đặt thứ gì đó để có được mysql-proxy và truy vấn truy tìm hoạt động?

Môi trường của tôi là Windows 7 Professional x64.

Xin lỗi vì tiếng Anh không tốt.

Trả lời

7

Lỗi bạn đang gặp phải là do --proxy-lua-script trỏ đến tệp mà mysql-proxy không thể tìm thấy. Hoặc bạn đã nhập tên sai, bạn đã nhập sai đường dẫn hoặc bạn đang mong đợi nó trong CWD của bạn và nó không có ở đó. Hoặc thực sự, nhìn vào toàn bộ lỗi một chút chặt chẽ hơn, có vẻ như mysql-proxy tự thấy tập tin trong CWD chính nó OK, nhưng một trong những mô-đun cơ bản không thích nó (có thể vì mysql-proxy thay đổi CWD bằng cách nào đó ?)

cố gắng tiết kiệm profile.lua vào thư mục gốc của ổ đĩa C: và cố gắng phiên bản khác nhau của các tùy chọn như sau:

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

Một trong số đó có lẽ sẽ làm việc

+0

Nó hoạt động! _-- proxy-lua-script = c: \ profile.lua_ ** Cảm ơn bạn! ** – Maico

2

truy vấn đơn giản log lua tập lệnh:

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 
Các vấn đề liên quan