将记录的查询存储到mysql客户端

时间:2014-07-07 11:55:53

标签: mysql lua mysql-proxy

我使用的客户端系统是(192.168.YY.YY),我在mysql-proxy中提到的后端地址是(192.168.XX.XX) .I使用以下LuaScript来记录查询using mysql-proxy

function read_query( packet )
  b={}
  j=1
      if string.byte(packet) == proxy.COM_QUERY then
        local query = string.sub(packet, 2)
        table.insert(b,query)
        print(b[j])
      end
end

上面的脚本记录了后端服务器(192.168.XX.XX)的mysql的以下结果:

select @@version_comment limit 1
SELECT DATABASE()
select @@version_comment limit 1
select USER()
SELECT DATABASE()
show tables

我需要将这些记录的查询存储到客户端系统(192.168.YY.YY)的数据库中。如何将记录的查询存储到客户端系统的数据库中。有人请帮我解决这个问题。谢谢!!

1 个答案:

答案 0 :(得分:1)

我不知道如何从mysql代理脚本打开数据库连接,但你可以很容易地创建一个单独的Lua脚本,该脚本使用luasocket在udp端口上侦听它写入文件的日志消息, yor代理脚本写入该端口,然后不存在同时查询导致日志文件写入的竞争条件的风险。相同的Lua脚本可以在不同的端口上侦听命令以获取日志文件。或者通过http访问文件。您甚至可以通过http post消息添加日志消息,然后甚至不需要单独的Lua脚本来进行日志文件管理。我不认为需要数据库。

要在客户端计算机上写入文件,您的脚本将使用Lua的io.open函数和file:write方法。阅读这些内容。正如我在答案的开头附近所说的那样,正如我认为您在其中一条评论中暗示的那样,如果同时发生多个查询,您可能必须协调写入日志,但您应该首先尝试简单的方法,它可能没问题。< / p>