将记录的查询存储到MYSQL客户端中。

我使用的客户端系统是 **(192.168.YY.YY)**,我在 mysql-proxy 中提到的后端地址是 **(192.168.XX.XX)**。我使用以下 LuaScript 来记录使用 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

上面的脚本记录了从后端服务器的 mysql 中获取的以下结果:

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

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

点赞
用户869951
用户869951

我不知道如何从 MySQL 代理脚本中打开一个 DB 连接,但你可以很容易地创建一个单独的 Lua 脚本,使用 luasocket 在 udp 端口上监听日志消息并将其写入文件中,代理脚本写入该端口,然后就没有同时查询会导致赛条件发生的风险。同样的 Lua 脚本可以在不同的端口上监听一个命令来获取日志文件,或者通过 http 使该文件可访问。你甚至可以通过 http post 消息添加日志信息,然后不需要单独的 Lua 脚本来管理日志文件。我认为不需要 DB。

要向客户端机器上的文件中写入内容,你的脚本将使用 Lua 的 io.open 函数和 file:write 方法。详细了解一下它们。正如我在答案开头所述并且我认为你在某些评论中已经暗示过的那样,如果多个查询同时发生,你可能需要协调写入日志,但你应该先尝试简单的方法,这可能是可行的。

2014-07-08 04:33:54