Mysql的日志包括如下几种日志:
错误日志
普通查询日志
二进制日志
慢查询日志
Mysql版本
此文档测试mysql的版本为
mysql -V
错误日志 error log
Mysql错误日志主要记录Mysql实例每次启动、停止的详细信息,以及Mysql实例运行过程中产生的警告或者错误信息,与其它日志不同,Mysql错误日志必须开启,无法关闭。
与错误日志相关的参数:
log_error:设置了错误日志文件的物理位置。
mysql> show global variables like 'log_error';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| log_error | .\LENOVO-PC.err |
+---------------+-----------------+
1 row in set (0.28 sec)
og_warnings:设置是否将警告信息也写入到错误日志中。默认是2,如果想要禁用,将其设置为0。
mysql> show global variables like 'log_warnings';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_warnings | 1 |
+---------------+-------+
1 row in set (0.03 sec)
普通查询日志 general log
Mysql general log记录了Mysql运行的所有操作,无论这些操作执行成功与否。另外还包括一些事件,例如客户端连接断开的一些信息,默认不开启。
与general log相关的参数:
general_log:设置general log是否开启。
mysql> show global variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log | OFF |
+---------------+-------+
1 row in set (0.02 sec)
我们可以通过下面方式设置
mysql> set @@global.general_log = 0;
Query OK, 0 rows affected (0.01 sec)
mysql> show global variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log | OFF |
+---------------+-------+
1 row in set (0.00 sec)
mysql> set @@global.general_log = 1;
Query OK, 0 rows affected (0.00 sec)
mysql> show global variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log | ON |
+---------------+-------+
1 row in set (0.00 sec)
我们同样可以采用my.cnf中添加general_log=on/off;此时我们使用set方式修改会不起作用。
general_log_file:general_log开启后,数据库将自动创建日志文件,次参数设置了general_log文件存放的物理位置。
mysql> show global variables like 'general_log_file';
+------------------+-----------------------------+
| Variable_name | Value |
+------------------+-----------------------------+
| general_log_file | /mysql/data/mysql-dev01.log |
+------------------+-----------------------------+
1 row in set (0.01 sec)
log_output:设置了general log和慢日志内存存储的方式,默认是file
mysql> show global variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | FILE |
+---------------+-------+
1 row in set (0.01 sec)
可以设置为输出方式为table
mysql> set @@global.log_output = 'table';
Query OK, 0 rows affected (0.00 sec)
mysql> show global variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | TABLE |
+---------------+-------+
1 row in set (0.00 sec)
通过mysql数据库下的general_log表查询日志信息
mysql> select * from mysql.general_log;
+----------------------------+---------------------------+-----------+-----------+--------------+------------------------------------------+
| event_time | user_host | thread_id | server_id | command_type | argument |
+----------------------------+---------------------------+-----------+-----------+--------------+------------------------------------------+
| 2016-11-16 09:18:57.772842 | root[root] @ localhost [] | 4 | 1 | Query | show global variables like 'log_output' |
| 2016-11-16 09:20:35.328694 | root[root] @ localhost [] | 4 | 1 | Query | show global variables like 'general_log' |
| 2016-11-16 09:20:44.918671 | root[root] @ localhost [] | 4 | 1 | Query | show databases |
| 2016-11-16 09:21:03.587735 | root[root] @ localhost [] | 4 | 1 | Query | select * from mysql.general_log |
+----------------------------+---------------------------+-----------+-----------+--------------+------------------------------------------+
4 rows in set (0.00 sec
慢日志 slow query log
慢日志记录执行时间过程和没有使用索引的查询语句,报错select、update、delete以及insert语句,慢日志只会记录执行成功的语句。
与慢日志相关的参数:
slow_query_log:设置慢日志是否开启。
mysql> show global variables like 'slow_query_log';
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| slow_query_log | OFF |
+----------------+-------+
1 row in set (0.01 sec)
可以通过设置参数进行修改
mysql> set @@global.slow_query_log = 1;
Query OK, 0 rows affected (0.00 sec)