由于blog各种垃圾评论太多,而且本人审核评论周期较长,所以懒得管理评论了,就把评论功能关闭,有问题可以直接qq骚扰我

mysql general log输出mysql执行历史

数据库 西门飞冰 5352℃
[隐藏]

1.前言

作为运维,在和开发人员调试mysql数据库故障的时候,你一定碰到过这样的需求,就是输出mysql执行的所有语句,用来分析问题。默认情况下mysql记录语句的执行只是开启了binlog日志,但是binlog不会记录select语句,这个时候就需要打开数据库的general log来记录数据库执行的所有语句了,使用方式如下。

2.开启general日志

查看general日志没有开启

MariaDB [(none)]> show variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log   | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

使用如下命令开启

MariaDB [(none)]> set global general_log=on;
Query OK, 0 rows affected (0.01 sec)

再次查看日志已经打开

MariaDB [(none)]> show variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log   | ON    |
+---------------+-------+
1 row in set (0.00 sec)

查看日志存放位置(目录位于datadir目录下)

MariaDB [(none)]> show variables like 'general_log_file';
+------------------+--------------+
| Variable_name    | Value        |
+------------------+--------------+
| general_log_file | c7-node2.log |
+------------------+--------------+
1 row in set (0.00 sec)

3.验证日志记录

执行一个查询数据库用户信息的语句。

MariaDB [(none)]> use mysql;
MariaDB [mysql]> select User,Host,Password from user;

查看日志记录内容:可以在文件末尾看到执行select的时间和执行的语句

[root@c7-node2 ~]# tail  /var/lib/mysql/c7-node2.log 
		    5 Field List	servers 
		    5 Field List	slow_log 
		    5 Field List	tables_priv 
		    5 Field List	time_zone 
		    5 Field List	time_zone_leap_second 
		    5 Field List	time_zone_name 
		    5 Field List	time_zone_transition 
		    5 Field List	time_zone_transition_type 
		    5 Field List	user 
161217 21:59:07	    5 Query	select User,Host,Password from user

 

 

转载请注明:西门飞冰的博客-专注于Linux运维 » mysql general log输出mysql执行历史

喜欢 (2)or分享 (0)