日志级别为error时不统计慢查询

【 TiDB 使用环境】线上
【 TiDB 版本】5.7.25-TiDB-v5.1.0
【遇到的问题】
enable-slow-log配置为true,但是Dashboard中的慢查询没有数据,查询INFORMATION_SCHEMA.CLUSTER_SLOW_QUERY也没有记录。
查看历史帖子,有描述是因为日志级别为error导致的,是这个原因导致的么?有计划修复么?

验证了一下,确实调整log.level为info,就能记录慢查询了。但是调整log.level为info后产生的日志太多了。

  1. 手动实测,未复现 error 级别不记录 slow log 的问题;
  2. 引用贴的问题,估计是他看了这块的代码对应的 PR,但那块的逻辑不会导致这个问题。至于为什么不记录 slow_log 应该与 log.level 级别无关。已引用贴中回复了。
mysql> select sleep(3);
+----------+
| sleep(3) |
+----------+
|        0 |
+----------+
1 row in set (3.00 sec)
mysql> select sleep(3);
+----------+
| sleep(3) |
+----------+
|        0 |
+----------+
1 row in set (3.00 sec)
mysql> select sleep(3);
+----------+
| sleep(3) |
+----------+
|        0 |
+----------+
1 row in set (3.00 sec)
mysql> select * from information_schema.cluster_config where `key` like '%log.level%' and TYPE like '%tidb%';
+------+---------------------+-----------+-------+
| TYPE | INSTANCE            | KEY       | VALUE |
+------+---------------------+-----------+-------+
| tidb | 172.16.120.122:6000 | log.level | error |
+------+---------------------+-----------+-------+
1 row in set (0.01 sec)

mysql> 
mysql> select Query from information_schema.cluster_slow_query where Query like '%sleep%';;
+------------------+
| Query            |
+------------------+
| select sleep(3); |
| select sleep(3); |
| select sleep(3); |
+------------------+
3 rows in set (0.00 sec)

mysql> select version();
+--------------------+
| version()          |
+--------------------+
| 5.7.25-TiDB-v6.1.0 |
+--------------------+
1 row in set (0.00 sec)

综上,功能层面不存在这个问题。

:thinking:感觉大概率还是版本问题,之前4.0.x的版本也没问题,最近一个项目的5.1版本遇到的这个问题。

不记 slow log 的 tidb 之前做过哪些操作?
是否发生过 OOM?有可能是版本问题,但应该不是功能层面的问题。

有什么可以定位根因的信息吗?从目前信息看,更像是重启恢复的 slow log 记录功能。

刚又重试了一遍,测试顺序如下,reload时采用的-R tidb的方式
log.level改为info,记录慢查询
log.level改为warn,记录慢查询
log.level改为error,不记录查询
log.level改为warn,记录慢查询

确实是bug,已经修复了。受影响的版本包括5.1.x,5.2.x,5.3.x

好吧,我当时就手懒了,没测,sorry。
you are right!

1 个赞

:wink:我是在git down源码的时候发现的这个pr,就很巧

git down 是什么东西?

:rofl:写错了,写错了,哈哈

该主题在最后一个回复创建后60天后自动关闭。不再允许新的回复。