0

我使用的客户端系统是(192.168.YY.YY),我在 mysql-proxy 中提到的后端地址是(192.168.XX.XX)。我使用以下内容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)。如何将记录的查询存储到客户端系统的数据库中。有人请帮我解决这个问题。谢谢!

4

1 回答 1

1

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

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

于 2014-07-08T04:33:54.767 回答