我们在对mysql优化或对项目排错的时候,经常需要用到跟踪mysql都执行了那些语句,今天在群里看到有朋友问怎么才能事实跟踪mysql都执行了那些语句呢!其实跟踪mysql非常的简单,今天咱们就介绍一下跟踪mysql执行语句的简单方法。
我们可以利用监控日志的方式来监控mysql都执行了那些语句,对于mysql集群中的机器,我们都开启了一个二进制日志的,不过这个二进制日志是给集群中的另外的mysql机器看的,我们可以开启另一个日志功能,general_log日志可以用来查看和监控mysql都执行了那些语句,例如mysql的增删改查等。下面我详细的介绍下开启的方法;
- 首先要登录mysql控制台
[root@huawei ~]# /usr/local/mysql/bin/mysql -u root -h 127.0.0.1 -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3683
Server version: 8.0.15 MySQL Community Server - GPL
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- 查看是否开启general_log日志记录
mysql> show variables like '%general_log%';
+------------------+------------------------+
| Variable_name | Value |
+------------------+------------------------+
| general_log | OFF |
| general_log_file | /data/mysql/huawei.log |
+------------------+------------------------+
2 rows in set (0.00 sec)
上面general_log日志状态为OFF,是关闭状态,我们下面需要打开他,下面的general_log_file是日志的路径,开启日志后,我们可以用命令查看这个日志文件,我们下面先开启日志。
- general_log_file日志开启
mysql> set GLOBAL general_log=ON;
Query OK, 0 rows affected (0.02 sec)
- 查看general_log_file日志是否成功启动
mysql> show variables like '%general_log%';
+------------------+------------------------+
| Variable_name | Value |
+------------------+------------------------+
| general_log | ON |
| general_log_file | /data/mysql/huawei.log |
+------------------+------------------------+
2 rows in set (0.00 sec)
上面的general_log状态为ON了,说明日志启动了,下面我们退出mysql,然后用tailf命令来监控事实的mysql语句执行动态,当然你也可以用其他的命令,如tail,cat等等。
[root@huawei ~]# tailf /data/mysql/huawei.log
2019-03-30T02:53:12.037842Z 5873 Query SELECT t.*, tt.*, tr.object_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category', 'post_tag', 'post_format') AND tr.object_id IN (2817, 3056, 3250, 3572, 6274, 7093, 7227, 7306, 7360, 7415, 132356, 161089) ORDER BY t.name ASC
2019-03-30T02:53:12.039515Z 5873 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (2817,3056,3250,3572,6274,7093,7227,7306,7360,7415,132356,161089) ORDER BY meta_id ASC
general_log日志记录了所有的sql执行语句,所以你要是一直打开着,这个文件会飞速的增长,那样就会占用非常大的空间,所以平时建议大家把这个日志关闭。
- general_log关闭方法,登录mysql控制台,执行下面的语句
mysql> set GLOBAL general_log=OFF;
Query OK, 0 rows affected (0.03 sec)
最新评论
感谢
能不能屏蔽掉刷流量的,统计工具显示全部都是
路过学习了
好像不太行啊 加载不出来啊
好文章
是否可以 实现 判断手机端跳转 而网址不变呢
你好
感谢分享,我也遇到这个了,根据你的提示,屏蔽掉了