【问题标题】:Monitoring queries of a MySQL user监控 MySQL 用户的查询
【发布时间】:2011-01-03 15:06:04
【问题描述】:

有什么方法可以监控/记录 MySQL 用户和他/她运行的查询?我不得不使用以下查询关闭常规日志:

SET GLOBAL general_log = 'OFF';  

因为否则日志文件将无法被文本编辑器处理。我正在寻找一种方法来为我想要监视的某些用户打开此日志,但它似乎并没有那样工作。

还有其他方法可以了解特定用户在我的数据库上运行的所有内容吗?

提前致谢。

【问题讨论】:

    标签: mysql logging monitor


    【解决方案1】:

    我可以推荐几种方法。

    1. SELECT * FROM information_schema.PROCESSLIST WHERE USER="someuser"; 现在由您决定使用什么。编写一个 cronjob (linux) 将其存储到一个文件中或编写一个 MySQL 事件将其输入到一个 mysql 表中。
    2. 使用通用查询日志并使用 linux awk、sed、grep 等工具解析日志文件以获得理想结果

    但是如果你不习惯写命令行linux命令你可以使用mk-query-digest甚至可以配置自定义监控工具如nagioscacti等。但我个人更喜欢MONyog,两者兼得1 和 2 完美,最重要的是它有一个 GUI。

    【讨论】:

      【解决方案2】:

      details on logging administration

      MySQL Server 可以创建许多不同的日志文件来帮助您查看正在发生的活动。请参阅第 5.2 节,“MySQL 服务器日志”。但是,您必须定期清理这些文件,以确保日志不会占用太多磁盘空间


      在其他系统上,您必须自己安装一个短脚本,从 cron(或其等效项)开始处理日志文件。


      您可以通过刷新日志来强制 MySQL 开始使用新的日志文件。当您发出 FLUSH LOGS 语句或执行 mysqladmin flush-logs、mysqladmin refresh、mysqldump --flush-logs 或 mysqldump --master-data 命令时,会发生日志刷新。

      【讨论】:

        【解决方案3】:

        看看 maatkit 的 mk-query-digest 工具,它或许可以做一些你想要的事情。至少,如果您必须再次启用它,它应该能够帮助您解析通用查询日志:

        http://www.maatkit.org/doc/mk-query-digest.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-27
          相关资源
          最近更新 更多