MySQL5.1新特性(一)日志的增强
NinGoo's blog

MySQL5.1新特性(一)日志的增强

对于MySQL,很多印象其实都是来自比较老的4.x版本,实际上MySQL在后续的5.0,5.1和6.0版本中还是做出了很多的改进,特别是原来一些动不动要重启的操作,慢慢的都可以在线做了,如果要做企业级数据库,在线操作的支持是必不可少的。由于我们在产品库中大量开始使用5.1,所以打算写一个系列短文,介绍一些个人觉得比较实用的新特性。因为MySQL这样的开源软件,版本分支比较多,所以每篇文章涉及的一些小版本可能不太一样。

MySQL有很多种日志,包括error loggeneral query logbinary logslow query log等。在以前的版本,这些日志的开启或者关闭,都是需要重启服务器的,而且都是记录到日志文件。从MySQL5.1.6版开始,general query log和slow query log开始支持写到文件或者数据库表两种方式,并且日志的开启,输出方式的修改,都可以在Global级别动态修改。

如果说日志是写到文件还是表,对于DBA来说不是那么在乎的话,那么可以动态的开启关闭日志真的可以说是DBA们梦寐以求的。尤其是slow log query,以前一直在头疼,开启吧,可能影响性能,不开吧,对于一些性能差的SQL又没有其他好用的捕获方式。因为开还是不开,涉及到重启服务的问题。

下面演示一下通过设置几个Global级别参数来开启关闭general query log和slow log query的过程:

root@NinGoo>select version();
+---------------+
| version()     |
+---------------+
| 5.1.25-rc-log |
+---------------+
1 row in set (0.00 sec)

设置日志输出方式为文件

root@NinGoo>set global log_output=file;
Query OK, 0 rows affected (0.00 sec)

设置general log和slow query log的日志文件路径

root@NinGoo>set global general_log_file='/tmp/general.log';
Query OK, 0 rows affected (0.00 sec)

root@NinGoo>set global slow_query_log_file='/tmp/slow.log';
Query OK, 0 rows affected (0.00 sec)

开启general log和slow query log,相应的,关闭只要设置参数为off

root@NinGoo>set global general_log=on;
Query OK, 0 rows affected (0.04 sec)

root@NinGoo>set global slow_query_log=on;
Query OK, 0 rows affected (0.02 sec)

如果设置log_output=table的话,则日志结果会记录到名为gengera_log和slow_log的两张表中,这两张表的默认引擎都是CSV,其实就是将日志保存为CSV文件格式了。当然,也可以将这两张表改为MyISAM引擎,这不是问题。

更多关于MySQL5.1日志的新特性,请参考MySQL 5.1 Reference Manual

本文网址:http://www.ningoo.net/html/2008/mysql_51_new_feather_1_log_output.html

订阅到Google | 收藏到Del.icio.us | 推荐到鲜果

上一篇: 下一篇:
相关文章 随机文章

本文Tags: ,

2 条评论

  • At 2008.09.01 13:48, ochef said:

    ningoo,请教一个mysql的问题:是这样的,我忘记了我的wordpress管理员的pwd,在我连进mysql用update wp_users set user_pass=password(‘wporacle’) where user_login=’admin’; 或者
    update wp_users set user_pass=’wporacle’ where user_login=’admin’;执行都没有提示错误,但还是在页面不能以管理员的身份登录,其它用户可以,由于本人对mysql不熟悉,请指点一下,TKS!

    • At 2008.09.01 19:06, NinGoo said:

      你这样直接更新应该是不行的,数据库中的wordpress用户是由wordpress加密后存储的。你可以新建一套wordpress,然后创建一个新的用户名,从数据库里获得密码字串,再将这个字串更新到原来的数据库中,用新的密码应该就可以了。