原文地址:https://blog.csdn.net/zyz511919766/article/details/49335949
开启general log会将所有到达MySQL Server的SQL语句记录下来。一般不会开启开功能,因为log的量会非常庞大。但个别情况下可能会临时的开一会儿general log以供排障使用。
相关参数一共有3:general_log、log_output、general_log_filegeneral_log:全局动态变量,默认关闭
log_output :全局动态变量,可取FILE、TABLE、NONE。其中TABLE存储方式比较方便按条件检索。若指定为NONE,则即使general_log开启了也不会记录log。若log_output指定为TABLE,则会在mysql数据库下边创建一个general_log表。需要注意的是该参数不仅仅影响general的存储方式还影响slow的存储方式,这一点需要特别注意。
general_log_file:全局动态变量,日志文件名,不指定的话默认为hostname。log,位于数据目录下。
mysql> show variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log | OFF |
+---------------+-------+
1 row in set (0.15 sec)
mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | FILE |
+---------------+-------+
1 row in set (0.15 sec)
mysql> show variables like 'general_log_file';
+------------------+----------------------+
| Variable_name | Value |
+------------------+----------------------+
| general_log_file | /data/mysql/t1-2.log |
+------------------+----------------------+
1 row in set (0.11 sec)
mysql> set global log_output='table';
Query OK, 0 rows affected (0.03 sec)
mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | TABLE |
+---------------+-------+
1 row in set (0.11 sec)
mysql> use mysql;
mysql> show create table 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` bigint(21) unsigned 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
可以看到,引擎使用的是CSV,该引擎下MySQL会将表中的数据存储在数据目录对应的数据库目录下文件名为表明扩展名为.CSV的文件中。表的引擎可以根据需求进行更改。