Date 五 23 十一月 2012 Tags mysql

当我们想采集一些查询语句用来分析时,可以利用slow-query-log来记录,与general-log相比它不会记录与查询语句无关的信息,例如:连接信息,登陆等。

我们通过设置long_query_time=0,能够记录到足够多的查询语句样本,但这在繁忙的线上是会有很大的性能影响,会消耗较多的file IO。long_query_time是一个动态变量可以在不重启MySQL数据库的情况下动态修改它的值,可以记录一段时间再把它恢复原值。虽然操作过程并不复杂,但有一个自动化整个过程的脚本会更好。

https://github.com/billkarwin/bk-tools/blob/master/full-slow-log/

$ full-slow-log [ -v ] [ -s seconds ] [ -c config ]
$ full-slow-log -v
Discovering slow_query_log=1
Discovering slow_query_log_file=mysql-slow.log
Discovering long_query_time=60.000000
Setting long_query_time=0
Setting slow_query_log_file=mysql-slow.log-full-20121122112413
Setting slow_query_log=1
Flushing slow query log
Sleeping 5 seconds... done.
Restoring slow_query_log_file=mysql-slow.log
Restoring long_query_time=60.000000
Restoring slow_query_log=1
Flushing logs during restore

可以设置采集时间-s,并添加时间戳自动命名日志。非常好用!


Comments

comments powered by Disqus