【问题标题】:How to log SQL errors AND warnings with a Lua script on mysql-proxy如何在 mysql-proxy 上使用 Lua 脚本记录 SQL 错误和警告
【发布时间】:2013-07-04 18:13:29
【问题描述】:

出于调试目的,我想在服务器级别记录 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 似乎很接近,但不幸的是提供的链接已失效,我找不到内容。

【问题讨论】:

    标签: mysql lua mysql-proxy


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 谢谢,但我已经知道如何启动 mysql-proxy 我的问题是如何在 Lua 脚本中记录警告
      猜你喜欢
      • 1970-01-01
      • 2019-12-31
      • 2015-08-07
      • 2011-07-22
      • 2011-04-01
      • 2020-09-13
      • 2017-06-30
      相关资源
      最近更新 更多