Mysql开启全SQL执行记录

MySQL记录全执行SQL语句

遇到性能问题时候,排查到数据库部分,一般都是看慢sql,但是有的时候慢sql也看不出什么东西,这个时候,如果可以有办法记录所有执行的sql,那排查起来可以更方便点。

开启日志查询功能

1
SHOW VARIABLES LIKE 'general%';

返回结果:

1
2
3
4
5
6
7
+------------------+----------------------------------------------+
| Variable_name | Value |
+------------------+----------------------------------------------+
| general_log | OFF |
| general_log_file | /data/mysql_data/izuf65tvx7it01x88bzbp4z.log |
+------------------+----------------------------------------------+
2 rows in set (0.00 sec)

可以看出,当前是关闭状态,开启即可:

1
set GLOBAL general_log='ON';

再查一下:

1
SHOW VARIABLES LIKE 'general%';

返回结果:

1
2
3
4
5
6
7
+------------------+----------------------------------------------+
| Variable_name | Value |
+------------------+----------------------------------------------+
| general_log | ON |
| general_log_file | /data/mysql_data/izuf65tvx7it01x88bzbp4z.log |
+------------------+----------------------------------------------+
2 rows in set (0.00 sec)

搞定,这下,调接口之后就会有完成的sql看了。

binlog

嗯,这个方式,怎么说呢,自己level太低,不是很看得懂里面记录的,不过binlog文件里记录的的确是全部的sql,最全。
binlog使用mysqlbinlog工具来查看。
查看binlog状态:

1
show variables like "%log_bin%";

返回结果:

1
2
3
4
5
6
7
8
9
10
11
+---------------------------------+----------------------------------+
| Variable_name | Value |
+---------------------------------+----------------------------------+
| log_bin | ON |
| log_bin_basename | /data/mysql_data/mysql-bin |
| log_bin_index | /data/mysql_data/mysql-bin.index |
| log_bin_trust_function_creators | ON |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+----------------------------------+
6 rows in set (0.00 sec)

就能看见binlog状态以及保存路径了

文章目录
  1. 开启日志查询功能
  2. binlog
|