我在MySQL 5.1.58社区版中运行了一个应用程序。
我的应用程序工作正常,但是突然间,任何查询都卡住了,然后所有的查询都被记录在缓慢的查询日志中。我很想知道哪个问题才是真正的罪魁祸首。
在Oracle中,我们可以很容易地跟踪会话,以找到在用户会话中执行的所有查询。在MySQL中是否有一个功能,通过它我可以在一个会话中找到所有查询的列表。
发布于 2014-03-26 18:21:49
MySQL有“通用查询日志”。这将记录MySQL服务器上的所有内容:用户连接、断开连接、查询等。
此查询日志是文件系统上的文件或(来自5.1.6版本的)表
在服务器启动时控制通用查询日志,如下所示:
5.1.6之前,通用查询日志目标始终是一个文件。若要启用日志,请使用--log[=file_name]或-l [file_name]选项启动mysqld。5.1.6中,目标可以是文件或表,或者两者兼而有之。使用--log[=file_name]或-l [file_name]选项启动mysqld以启用常规查询日志,并可选择使用--log-output指定日志目的地。5.1.12,作为--log或-l的替代方法,可以使用--general_log[={0|1}]指定初始的通用查询日志状态。在这种情况下,使用默认的通用查询日志文件名。在没有参数或参数为1的情况下,--general_log启用日志。如果参数为0,则此选项将禁用日志。5.1.29开始,使用--general_log[={0|1}]启用或禁用常规查询日志,并使用--general_log_file=file_name指定日志文件名。不建议使用--log和-l选项。启动查询日志后,查找文件(或表)以获得更多信息。
MySQL查询日志文档:http://dev.mysql.com/doc/refman/5.1/en/query-log.html
发布于 2014-04-03 14:53:28
启用通用日志http://dev.mysql.com/doc/refman/5.1/en/query-log.html
你也可以参考这篇博文:http://serge.frezefond.com/2013/04/how-can-we-audit-a-mysql-server/
对于每个查询审核的详细日志记录信息,还有其他方法:
有由MySQL和一些分支发布的审计插件,如果您担心MySQL服务器上的安全性,可以尝试它们。
1) MySQL企业审计
企业审计使用开放的MySQL审核API来启用标准的、基于策略的监视和记录在特定MySQL服务器上执行的连接和查询活动。
2) McAfee审计插件-开源
设计时强调安全和审计要求。该插件可以用作独立的审计解决方案,也可以配置为将数据提供给外部监视工具。
3) MariaDB审计插件
许多企业都使用审计条例来确保它们符合法律和行业标准。这类条例往往要求对用户访问数据库数据的过程进行跟踪。
请参考我现有的答案,MySQL查询日志
https://dba.stackexchange.com/questions/61808
复制相似问题