数据库优化——MySQL日志

来源:互联网 发布:linux操作系统基础 编辑:程序博客网 时间:2024/06/05 23:00

摘要

本文为数据库优化系列文章的第四篇文章 :《数据库优化——优化MySQL Server》

更多文章参见

数据库优化 : http://blog.csdn.net/leyounger/article/details/70157087

MySQL日志

MySQL中有四种不同的日志,分别是错误日志,BINLOG日志,查询日志和慢查询日志

1. 错误日志

错误日志记录了系统mysqld从启动到关闭的所有严重错误的日志

当系统出错的时候,第一时间应当来看错误日志

可以用–log-error[=file_name]选项来指定保存错误日志的位置,默认来说,mysqld使用host_name.err(host_name为主机名),并默认在参数DATADIR指定的目录中写入日志文件

2. BINLOG

二进制日志记录了所有的DDL语句和DML语句,但是不包括数据查询语句。

BINLOG对数据灾难时恢复起着极其重要的作用!!

1. 日志的位置

当用–log-bin[=file_name]启动时,mysqld将包含所有更新数据的SQL命令写入日志文件,如果没有指定file_name,则在主机名后面跟-bin,默认写在DATADIR指定的目录

2. 日志的读取

shell> mysqlbinlog log-file

3. 日志的删除

对于比较繁忙的OLTP系统,需要每天定期删除log文件,下面介绍几种删除日志的常见方法

//(1) 执行"RESET MASTER;"该命令将删除所有binlog,新日志编号从“000001”开始,//(2) 执行"PURGE MASTER LOGS TO 'mysql-bin.******'命令该命令将删除******之前的所有日志//(3) 执行"PURGE MASTER LOGS BEFORE 'YYYY-MM-DD hh24:mi:ss'"该命令删除日期前的所有日志//(4) 设置参数--expire_logs_days=#表示日志的过期天数

3. 查询日志

查询日志记录了客户端的所有语句,而BINLOG日志不包含查询语句

1. 日志的位置

当用–log[=file_name]启动时,mysqld将包含所有更新数据的SQL命令写入日志文件,如果没有指定file_name,默认文件名为host_name.log,默认写在DATADIR指定的目录

2. 日志的读取

more localhost.log

4. 慢查询日志

慢查询日志记录了包含所有执行时间超过参数long_query_time(单位:秒)所 设置值的SQL语句的日志。获得表锁定的时间不算作执行时间。

1. 日志的位置和格式

同错误日志、查询日志一样,慢查询日志记录的格式也是纯文本,可以被直接读取。
当用–log-slow-queries[=file_name]启动时,mysqld将包含所有更新数据的SQL命令写入日志文件,如果没有指定file_name,默认文件名为host_name-slow.log,默认写在DATADIR指定的目录

//(1) 首先查询以下long_query_time的值SHOW VARIABLES LIKE 'long%';//(2) 为了方便测试,将慢查询时间修改为2秒SET long_query_time=2;//(3) 第一个查询因为查询时间低于2秒而不会出现在日志中SELECT COUNT(1) FROM emp;//(4) 第二个查询因为查询时间大于2秒则应该出现在日志中SELECT COUNT(1) FROM emp t1, dept t2 WHERE t1.id=t2.id;//(5) 查看慢查询日志more localhost-slow.log

可以使用mysqldumpslow来对慢查询日志进行分类汇总!

阅读全文
0 0
原创粉丝点击