MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等。
MySQL日志文件系统的组成
a、错误日志:记录启动、运行或停止mysqld时出现的问题。
b、通用日志:记录建立的客户端连接和执行的语句。
c、更新日志:记录更改数据的语句。该日志在MySQL 5.1中已不再使用。
d、二进制日志:记录所有更改数据的语句。还用于复制。
e、慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。
日志必然会拖慢系统速度,所以日志记录默认是关闭的,定位问题时需要打开日志记录。
首先我们打开慢日志记录,用于记录消耗时间超过某个范围的sql,来定位增删改查sql的执行效率。
show variables like 'version'; //查看数据库版本号
- +---------------+------------+
- | Variable_name | Value |
- +---------------+------------+
- | version | 5.5.39-log |
- +---------------+------------+
show variables like '%slow%'; //查看日志是否开启
- +---------------------+---------------------------------+
- | Variable_name | Value |
- +---------------------+---------------------------------+
- | log_slow_queries | OFF |
- | slow_launch_time | 2 |
- | slow_query_log | OFF |
- | slow_query_log_file | /var/lib/mysql/suse11b-slow.log |
- +---------------------+---------------------------------+
set global slow_query_log='ON'; //打开日志记录
set global long_query_time=1;//将全局级别long_query_time设置为1秒
set session long_query_time=1;//将session级别long_query_time设置为1秒
show variables like '%long_query_time%';//查看慢日志时间范围,超过时间范围的sql才会被计入日志
- +-----------------+-----------+
- | Variable_name | Value |
- +-----------------+-----------+
- | long_query_time | 10.000000 |
- +-----------------+-----------+