web服务器mysql日志分析

来源:未知 责任编辑:责任编辑 发表时间:2013-11-26 22:15 点击:

 

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 (重新开始记录)

 

 

 

 

本文出自 “三足乌工作室” 博客

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • mysql-mmm
    • mysqldump命令——MySQL数据库备份还原
    • Oracle数据导入MySQL的快捷工具:MySQL Migration Toolkit
    • 简简单单储存过程——循环一个select结果集
    • MySQL数据库十大优化技巧
    • Mysql安装笔记
    • Mysql主主复制架构配置
    • Mysql的Procedure 参数为NULL问题分析
    • MySQL Stmt预处理提高效率问题的小研究
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1