2014-07-07 34 views
0

我使用的客户端系统是(192.168.YY.YY),我已经在MySQL的代理提到的后台地址为(192.168.XX.XX)。我使用以下LuaScript登录查询using mysql-proxy存储记录的查询到mysql客户端

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的(192.168.XX.XX)以下结果:

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

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

+1

由于b和j在每次查询时被初始化为空/ 1,所以打印工作正常,但b总是只有一个条目。另外,客户端请求执行脚本的mysql-proxy,然后转发到后端mysql服务器,而你的帖子则表明反过来,所以你不清楚你想要做什么。最后,在本地系统(运行mysql代理的机器上的那个系统上的那个)上,你试图登录哪种类型的数据库以及为什么不使用简单文件甚至是SQLite数据库,最重要的是,你尝试了什么? – Schollii

+0

@Schollii我需要在客户端系统(192.168.YY.YY)上的数据库来登录查询。我比数据库更喜欢数据库而不是文件,因为它很容易从数据库检索数据作为查询,还有几个用户访问同一数据库在这种情况下同一时间文件不起作用。 – robin

回答

1

我不知道如何从mysql代理脚本打开数据库连接,但是您可以非常轻松地创建一个单独的Lua脚本,该脚本使用luasocket监听udp端口上的日志消息,以便将其写入文件,代理脚本写入该端口,则不存在导致竞争条件进行日志文件写入的同时查询的风险。相同的Lua脚本可以在不同的端口上侦听获取日志文件的命令。或者通过http访问文件。你甚至可以通过http post消息添加日志消息,然后甚至不需要单独的Lua脚本来进行日志文件管理。我没有看到需要分贝。

要写入客户端机器上的文件,您的脚本将使用Lua的io.open函数和file:write方法。阅读这些。正如我在答复开始时所说的那样,并且我认为您在其中一条评论中暗示,如果多个查询同时发生,您可能必须对日志进行协调,但您应该先尝试一下简单的方法,但这可能没有问题。

+0

我只需要一个数据库,写入文件并没有多大帮助。如果我们将查询登录到文件中,可以将文件保留在客户端系统(192.168.YY.YY),而不是保留在后端服务器?? – robin

+0

@robin将文件存储在客户端系统上实际上是最简单的。 – Schollii

+0

如何将文件存储在客户端系统上?可以使用一下来解释一下吗? – robin