0

出于调试目的,我想在服务器级别记录 MySQL 返回的 SQL 错误和警告消息以及相应的查询。

我发现了两个有用的 Lua 脚本:

https://github.com/koopa/mysql-proxy-log-error-queries/blob/master/mysql-proxy-log-error-queries.lua https://github.com/patrickallaert/MySQL-Proxy-scripts -for -devs (debug.lua)

允许使用 MySQL 代理记录错误。但我仍在寻找一种记录警告的方法。我对 mysql-proxy LUA 脚本没有信心。有人可以告诉我该怎么做吗?

这个问题:Log warnings into a table似乎很接近,但不幸的是提供的链接已失效,我找不到内容。

4

2 回答 2

2

我终于在学习文学的过程中检查了这个主题,并开发了适合我的 Lua 脚本。

我首先提到的脚本(https://github.com/koopa/mysql-proxy-log-error-queries/blob/master/mysql-proxy-log-error-queries.lua)是一个很好的起点,但是:

  • 它只记录错误而不是警告。最初,它管理一个“错误标志”,如果客户端的查询返回错误,则该标志设置为 true。我更改了它以记录SHOW WARNINGS返回某些内容(错误、警告或注释)的每个查询。

  • 它将错误日志行插入到表中。这可能很好,但对客户端来说可能会很混乱,因为插入日志行会清除“显示警告”查询显示的消息。可能有一种方法可以解决这个问题,打开一个新的会话或连接......但我选择将事件记录到一个简单的文本文件中。'其次,由于错误消息或原始查询中可能包含简单引号,原始脚本中的插入查询可能会产生语法错误。

在记录所有警告时我们必须小心一点:所有查询都不会清除警告/注释队列。因此可以在非警告生成SHOW WARNINGS查询之后返回由先前查询生成的结果集。为了解决这个问题,我使用了一种肮脏的方法:在检测到查询后,我注入了一个错误的查询,我知道它会生成一条错误消息;在我忽略此错误消息之后。这是一种“清除”警告和注释的方法......

于 2013-07-04T10:13:29.333 回答
0

您可以下载此脚本并在配置 MySQL-proxy 时指定。此处列出了命令行选项: MySQL-proxy-configuration

在您的情况下,典型的 MySQL 代理配置将如下所示:

$ mysql-proxy --proxy-backend-addresses=192.168.xx:3305 --proxy-address=192.168.yy:4045 --proxy-lua-script=mysql-proxy-log-error-queries.lua

我猜你可能必须修改这个脚本才能连接到 MySQL-proxy。

于 2013-07-02T12:53:35.767 回答