hellow 运维
分类: 系统运维
2016-12-31 14:35:00
作为运维,在和开发人员调试mysql数据库故障的时候,你一定碰到过这样的需求,就是输出mysql执行的所有语句,用来分析问题。默认情况下mysql记录语句的执行只是开启了binlog日志,但是binlog不会记录select语句,这个时候就需要打开数据库的general log来记录数据库执行的所有语句了,使用方式如下。
查看general日志没有开启
1
2
3
4
5
6
7
|
MariaDB [(none)]> show variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log | OFF |
+---------------+-------+
1 row in set (0.00 sec)
|
使用如下命令开启
1
2
|
MariaDB [(none)]> set global general_log=on;
Query OK, 0 rows affected (0.01 sec)
|
再次查看日志已经打开
1
2
3
4
5
6
7
|
MariaDB [(none)]> show variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log | ON |
+---------------+-------+
1 row in set (0.00 sec)
|
查看日志存放位置(目录位于datadir目录下)
1
2
3
4
5
6
7
|
MariaDB [(none)]> show variables like 'general_log_file';
+------------------+--------------+
| Variable_name | Value |
+------------------+--------------+
| general_log_file | c7-node2.log |
+------------------+--------------+
1 row in set (0.00 sec)
|
执行一个查询数据库用户信息的语句。
1
2
|
MariaDB [(none)]> use mysql;
MariaDB [mysql]> select User,Host,Password from user;
|
查看日志记录内容:可以在文件末尾看到执行select的时间和执行的语句
1
2
3
4
5
6
7
8
9
10
11
|
[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
|