log_error_suppression_list参数是MySQL8.0.13版本引入的一个变量,用于指定在错误日志中应该被抑制(这里抑制是屏蔽,不记录的意思)的错误消息。通过设置这个变量,数据库管理员可以控制哪些特定的内容不被记录到错误日志中,从而减少日志中不必要或不重要的信息,以便更容易地识别和关注那些真正需要注意的问题。
本文基于MySQL8.4.3版本。MySQL8.4官方参考手册:https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html
log_error_suppression_list
log_error_suppression_list与log_error_verbosity搭配使用,可以抑制指定的信息不写入log_error中,该值可以是空字符串,表示不抑制,或是一串逗号分隔的错误代码,错误代码可以以符号或数字形式指定,可以不加MY-和前缀零指定。以下是允许的代码格式示
例:
ER_SERVER_SHUTDOWN_COMPLETE
MY-000031
000031
MY-31
31
临时生效,可在MySQL数据库中可以使用以下方法,错误代码MY-010926的错误信息将不会被记录到错误日志中。
1 |
SET GLOBAL log_error_suppression_list = 'MY-010926"'; |
永久生效,可以在my.cnf中配置以下内容。
1 |
log_error_suppression_list = "MY-010926" |
演示示例
基于wlnmp源,安装MySQL8.4.3版本验证log_error_suppression_list参数。
在/etc/my.cnf中做以下配置
1 2 |
log_error_verbosity = 3 log_error_suppression_list = "" |
重启MySQL
1 |
/etc/init.d/mysql restart |
故意输错密码
1 |
mysql -uroot -pwhsir |
此时在/data/mysql/error.log中可以看到[MY-010926] [Server] Access denied for user 'root'@'localhost' (using password: YES)信息,
接下来我们来"抑制"它
修改/etc/my.cnf配置
1 2 |
log_error_verbosity = 3 log_error_suppression_list = "MY-010926" |
重启MySQL
1 |
/etc/init.d/mysql restart |
再故意输错密码
1 |
mysql -uroot -pwhsir |
此时在/data/mysql/error.log中将不显示MY-010926内容。
注意事项
格式写法:如果需要"抑制"多个,可以用逗号分隔,如log_error_suppression_list = 'MY-010926,MY-010914"'。
总结
log_error日志出现大量重复无用的信息时,通过log_error_suppression_list,可以减少日志中不必要的信息,但是配置时需谨慎,以免遗漏重要的信息。
附,MySQL my.cnf配置文件生成器:https://dbcnf.wlnmp.com/
原文链接:MySQL log_error_suppression_list参数介绍,转载请注明来源!