2011-01-12 12 views
5

私はちょうどmysqlのプロキシをダウンロードして(MySQLのドキュメントにあります)このスクリプトのLUAを作成:MySql-Proxyを使用してMySqlクエリをトレースする方法は?

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

を私は実行すると:

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

これは私が使用しているコマンドラインであります\ lua-scope.c:241:stat(C:... \ profile.lua)が失敗しました:エラーなし(0) "という簡単なクエリ(「select * from table1」など)

注:luaスクリプトなしでmysql-proxyを実行すると、エラーは発生しません。

mysql-proxyとquery tracingが動作するには何かインストールする必要がありますか?

私の環境はWindows 7 Professional x64です。

申し訳ありませんが悪い英語です。

答えて

7

エラーは、mysql-proxyが見つけることができないファイルを指す--proxy-lua-scriptが原因です。名前を間違って入力したか、間違ったパスを入力したか、またはあなたのCWDで期待しているのですが、そこにはありません。実際には、エラー全体をもう少し見てみると、mysql-proxy自体がCWD自体のファイルをOKと見なす可能性がありますが、基礎となるモジュールの1つでは、mysql-proxyがCWDを何とか変更するためです?)

あなたのCのルートにprofile.luaを保存してください:ドライブなどのようなオプションの異なるバージョンしよう:これらの

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

一つは、おそらく

+0

作品です! _-- proxy-lua-script = c:\ profile.lua_ **ありがとうございました!** – Maico

2

単純なクエリログ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 
関連する問題