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