mysql四种日志分析
ps:本人亲测,阿里云2核4G5M的服务器性价比很高,新用户一块多一天,老用户三块多一天,最高可以买三年,感兴趣的可以戳一下:阿里云折扣服务器
网址:https://segmentfault.com/a/1190000003740891
0x01.About
MySQL有四种类型的日志:Error Log、General Query Log、Binary Log 和 Slow Query Log。
(1)第一种错误日志,记录MySQL运行过程ERROR,WARNING,NOTE等信息,系统出错或者某条记录出问题可以查看ERROR日志。
(2)第二种日常运行日志,记录MySQL运行中的每条请求数据。
(3)第三种二进制日志,包含了一些事件,这些事件描述了数据库的改动,如建表、数据改动等,也包括一些潜在改动,主要用于备份恢复、回滚等操作。
(4)第四种慢查询日志,用于MySQL性能调优。
--------------------------------------------------------------------------------
0x02.Error Log
MySQL错误日志默认以hostname.err存放在MySQL日志目录,如果不知道MySQL当前的错误日志目录可以使用查询语句:
mysql> show variables like 'log_error';
+---------------+--------------------------------------+
| Variable_name | Value |
+---------------+--------------------------------------+
| log_error | /usr/local/var/mysql/mysql-error.log |
+---------------+--------------------------------------+
修改错误日志地址可以在/etc/my.cnf中添加--log-error[=file_name]选项来开启mysql错误日志。
错误日志记录了MySQL Server每次启动和关闭的详细信息以及运行过程中所有较为严重的警告和错误信息。
知道了MySQL错误日志地址,我们就可以查看MySQL错误日志:
2015-09-12 16:03:20 2624 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 35
2015-09-12 16:03:20 2624 [Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files.
2015-09-13 00:03:21 2183 [Note] InnoDB: Shutdown completed; log sequence number 426783897
InnoDB: Unable to lock ./ibdata1, error: 35 可以得出资源被抢占,有可能是开了多个MySQL线程。
--------------------------------------------------------------------------------
0x03.General Query Log
日常请求的SQL:
添加方式一样在 /etc/my.cnf 中添加 general-log-file[=file_name]。
在my.cnf中的mysqld下面添加:
general-log=on
general-log-file=/tmp/mysqlog
--------------------------------------------------------------------------------
0x04.Binary Log
启用Binlog