快速业务通道

web服务器mysql日志分析

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-26

Freebsd下如何查案和分析日志,对我来说还是一个新课题,之前没有处理过,甚至不知道日志存放在什么位置,如何记录.

网络上有一些不错的资料,mysql手册也可以用来参考,但没有实践过还会遇到一些莫名的问题.

来看一下mysql日志的种类,一般来说,日志有五种,分别为:

错误日志: -log-err (记录启动,运行,停止mysql时出现的信息)
查询日志: -log (记录建立的客户端连接和执行的语句)
慢查询日志: -log-slow-queries (记录所有执行超过long_query_time秒的所有查询)
更新日志: -log-update (记录更改数据的语句,不赞成使用该日志)
二进制日志:-log-bin (记录所有更改数据的语句,还用于复制,恢复数据库用)

我们要分析mysql运行的情况,主要的是分析慢查询日志,简单的几条命令,查询当前日志记录的状况:

mysql>show variables like ''log_%'';(是否启用了日志)
mysql> show master status;(怎样知道当前的日志)
mysql> show master logs;(显示二进制日志的数目)

要启用慢查询日志,需要在my.cnf中设置启用:

long_query_time =1 执行超过1秒的sql会被log下来
log-slow-queries= /usr/local/db/log/slowquery.log将查询返回较慢的语句进行记录
log-queries-not-using-indexes = /usr/local/db/log/nouseindex.log 就是字面意思,log下来没有使用索引的query
log=/usr/local/db/log/mysql.log 对所有执行语句进行记录

二进制日志文件比较大,可以再my.cnf中设置二进制日志文件的过期时间,这样mysql就会自动删除到期的日志文件,节省磁盘空间:

expire_logs_days=5

重新启动mysql,就可以看到mysql开始记录log,slow-log了,不知道为什么我设置的log-queries-not-using-indexes的日志文件没有记录;

可以通过shell直接输入 mysqldumpslow /usr/local/db/log/slowquery.log 可以获得日志的摘要信息,包括:

出现次数(Count),
执行最长时间(Time),
累计总耗费时间(Time),
等待锁的时间(Lock),
发送给客户端的行总数(Rows),
扫描的行总数(Rows),
用户以及sql语句本身(抽象了一下格式, 比如 limit 1, 20 用 limit N,N 表示).

剩下的工作,就交给程序员了,进一步优化数据库查询语句,降低mysql负载.

日志更新

mysql的日志会一直记录,如果想要断开,重新记录需要做以下几步:

1、mv log /backup/log (如果需要备份的话)

2、rm log (删除log文件,此时mysql会停止记录日志)

3、mysqladmin -uroot -ppassword flush-logs (重新开始记录)

本文出自 “三足乌工作室” 博客,请务必保留此出处http://webteam.blog.51cto.com/863355/721833

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号