0
我需要从一般查询日志文件中筛选与特定数据库相关的日志,我如何使用grep进行此操作或者有任何方法可以执行此操作吗?如何从mysql-general.log文件grep与特定数据库相关的日志?
我需要从一般查询日志文件中筛选与特定数据库相关的日志,我如何使用grep进行此操作或者有任何方法可以执行此操作吗?如何从mysql-general.log文件grep与特定数据库相关的日志?
当您运行查询时,通用查询日志不会记录当前数据库。这些信息根本不在日志中。唯一的可能是如果表格在查询中被模式名称限定,并且可以解析出来。
慢查询日志确实为记录了每个查询的默认数据库。您可以set global long_query_time=0
为所有查询制作慢查询日志记录信息,就像通用日志一样。
要过滤出特定当前数据库的日志条目,我会使用pt-query-digest,它是免费的,并且是Percona Toolkit的一部分。
例如,以下是一个读取慢查询日志的命令,筛选当前数据库“test”的条目并以新的慢查询日志格式输出。
pt-query-digest --filter '$event->{db} eq "test"' mysql-slow.log --no-report --output slowlog
但是,你应该知道,这只能过滤出了当默认数据库是“测试”运行查询。通过使用模式名称限定表名,任何查询都可以访问其他数据库中的表。 SELECT * FROM mydb.mytable
。但是,慢日志可能仍会记录不同的默认数据库。
发表一个例子 – 2014-11-01 15:05:05