MySQL开启general_log查看执行的SQL语句

general log会记录下发送给MySQL服务器的所有SQL记录,因为SQL的量大,默认是不开启的。一些特殊情况(如排除故障)可能需要临时开启一下。

开启MySQL的general log

MySQL有三个参数用于设置general log:

  • general_log:用于开启general log。ON表示开启,OFF表示关闭。
  • log_output:日志输出的模式。FILE表示输出到文件,TABLE表示输出到mysq库的general_log表,NONE表示不记录general_log。
  • general_log_file:日记输出文件的路径,这是log_output=FILE时才会输出到此文件。

1、查看先是否开启了general log

mysql> show variables where Variable_name="general_log";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log  | OFF  |
+---------------+-------+
1 row in set (0.00 sec)

2、查看日志输出模式

mysql> show variables where Variable_name="log_output"; 
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output  | FILE |
+---------------+-------+
1 row in set (0.00 sec)

3、查看日志输出路径

mysql> show variables where Variable_name="general_log_file";
+------------------+----------------------------+
| Variable_name  | Value           |
+------------------+----------------------------+
| general_log_file | /var/run/mysqld/mysqld.log |
+------------------+----------------------------+
1 row in set (0.00 sec)

4、设置日志模式为TABLE,FILE双模式

mysql> set global log_output='TABLE,FILE';    
Query OK, 0 rows affected (0.00 sec)

5、开启general log

set global general_log=ON;

6、关闭general log

大多数情况是临时开启general log,需要记得关闭,并把日志的输出模式恢复为FILE。

set global general_log=OFF;
set global log_output='FILE'

general_log表

现在在mysql库的general_log表就可以查看到开启general log那段时间的SQL记录。

查看general_log的表结构:

mysql> show create table mysql.general_log\G
*************************** 1. row ***************************
    Table: general_log
Create Table: CREATE TABLE `general_log` (
 `event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 `user_host` mediumtext NOT NULL,
 `thread_id` int(11) NOT NULL,
 `server_id` int(10) unsigned NOT NULL,
 `command_type` varchar(64) NOT NULL,
 `argument` mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'
1 row in set (0.00 sec)

查询得到

$select * from mysql.general_log limit 1 \G
*************************** 1. row ***************************
 event_time: 2018-01-05 17:35:45
  user_host: root[root] @ localhost []
  thread_id: 89429
  server_id: 2
command_type: Query
  argument: select * from mysql.general_log
1 row in set (0.00 sec)

版权声明:著作权归作者所有。

相关推荐

查看项目使用Swift的版本

使用xcode创建swift项目,你需要知道在项目中正在使用的swift版本。使用终端查看:swift -version 比较稳妥的方法是在xcode上查看,因为每个项目可能设定的swift 版本不一样。按路径打开:Project -> 选择项目的target -> Build Settings ->

MySQL查看和设置事务的隔离级别

查看MySQL的事务隔离级别查看事务隔离级别SHOW VARIABLES LIKE 'tx_isolation'; 查看全局的事务隔离级别SHOW GLOBAL VARIABLES LIKE 'tx_isolation'; 使用系统变量查询SELECT @@global.tx_isolation; SELECT&nbs

MyBatis执行MySql批量插入数据

MySQL批量插入数据语法为:insert into my_table(field1, field2, field3) values ("f1_vaule1","f2_vaule1","f3_vaule1"), ("f1_vaule2","f2_vaule2"

Sql Server使用查询语句更新数据

Sql Server支持在一个sql语句里使用查询的数据更新表。简单更新简单的使用一个表的数据更新另一个表。UPDATE    table_a  SET    table_a.col1=table_b.col1 FROM    table_b  WHERE table_

MySQL查看和修改时区time_zone

查看时区mysql> show variables like "%time_zone%"; +------------------+--------+ | Variable_name   | Value  | +------------------+--------+ |&

查看MySQL数据库空间使用情况

information_schema是MySQL的系统数据库,information_schema里的tables表存放了整个数据库各个表的使用情况。可以使用sql来统计出数据库的空间使用情况,相关字段:table_schema:数据库名table_name:表名table_rows:记录数data_length:数据大小index_length:索引大小统计表使用空间mysql> select