曾经记录过一个号称是“绝世秘籍”的抓取MySQL查询语句的方法,原理是实用tcpdump来捕获客户端与服务器之间的通讯,然后经过一些整理得到结果。
今天翻看MySQL 官方文档的时候,发现了更好的办法:
自从MySQL 5.1.6版本开始,有几个日志相关参数可以动态控制:
1,general_log ,是否打开一般日志,这个日志几乎包括所有的增删改查语句。
2,log_output,日志的目的地,可以选择文件:FILE,数据表:TABLE,或者两者同时都记录。
3,general_log_file,一般日志文件名。
4,slow_query_log,是否打开比较耗时的查询的语句。
5,slow_query_log_file,耗时查询日志的文件名。
以上几个参数都是可以动态调整的,也就实说,可以随时打开和关闭日志,而不重启MySQL服务。
比如我们现在需要抓取所有的查询,用来分析应用程序,可以打开general_log并保存到数据表中:
set GLOBAL general_log='ON';
set GLOBAL log_output='TABLE';
然后就可以从mysql.general_log表中看到所有的查询语句。
一句话,很方便很强大。
更多的相关信息参见官方文档: http://dev.mysql.com/doc/refman/5.1/en/log-tables.html
每次浏览官方文档都能够学习到新鲜的有意思的内容.
今天翻看MySQL 官方文档的时候,发现了更好的办法:
自从MySQL 5.1.6版本开始,有几个日志相关参数可以动态控制:
1,general_log ,是否打开一般日志,这个日志几乎包括所有的增删改查语句。
2,log_output,日志的目的地,可以选择文件:FILE,数据表:TABLE,或者两者同时都记录。
3,general_log_file,一般日志文件名。
4,slow_query_log,是否打开比较耗时的查询的语句。
5,slow_query_log_file,耗时查询日志的文件名。
以上几个参数都是可以动态调整的,也就实说,可以随时打开和关闭日志,而不重启MySQL服务。
比如我们现在需要抓取所有的查询,用来分析应用程序,可以打开general_log并保存到数据表中:
set GLOBAL general_log='ON';
set GLOBAL log_output='TABLE';
然后就可以从mysql.general_log表中看到所有的查询语句。
一句话,很方便很强大。
更多的相关信息参见官方文档: http://dev.mysql.com/doc/refman/5.1/en/log-tables.html
每次浏览官方文档都能够学习到新鲜的有意思的内容.