由于我为服务器上的所有查询启用了mariadb日志,因此使用Netdata每秒钟向我显示这些查询:
SHOW GLOBAL VARIABLES LIKE 'max_connections'
11 Query SHOW GLOBAL STATUS
11 Query commit
我不得不说,这并不能帮助我投资服务器上发生的事情,因为它污染了我的日志。
有没有办法避免每秒钟记录这类查询?
发布于 2020-02-25 20:35:15
虽然可能是更明智的做法是指定数据库的确切问题,而不是试图清理日志。 (我建议使用grep或sed来实现这一点)。但是这里有一个过度设计的解决方案,它将一劳永逸地解决您的日志问题。
我们将将mysql日志重定向到fifo管道,该管道将被syslog读取和过滤。
若要执行此操作,请转到存储通用日志文件的文件夹中,删除/重命名原始日志&使用命令在其位置创建fifo管道:
mkfifo mysql-general.log
检查您的my.cnf,它应该指向该文件:
[mysqld]
general-log-file = /path/to/your/log/mysql-general.log
然后,将/etc/syslog-ng/syslog-ng.conf
(centos 7实际上需要先安装它.)配置为读取FIFO管道,并在将结果写入最终文件时根据需要对其进行过滤。
下面是一个适合您需要的示例配置:
source s_mysql_general_log { pipe("/path/to/your/log/mysql-general.log" program_override("mysql-general-log")); };
filter f_mysql_general_log { not match("^SHOW GLOBAL VARIABLES LIKE 'max_connections'") and not match("^11 Query SHOW GLOBAL STATUS") and not match("^11 Query commit"); };
destination d_mysql_general_log { file("/var/log/mysql-general.log"); }
log { source(s_mysql_general_log); filter(f_mysql_general_log); destination(d_mysql_general_log); flags(final); };
因此,您将得到/var/log/mysql-general.log
文件,而不需要查询您不喜欢的.稍后,我将尝试发布该解决方案的系统专用版本。
https://serverfault.com/questions/1004547
复制相似问题