log_error_verbosity=2是生产环境推荐配置,可屏蔽note日志、保留error和warning,兼顾排障能力与日志精简;mysql 8.0默认值3会记录大量非关键note信息,易干扰故障定位且增大日志体积。

直接设 log_error_verbosity=2 即可屏蔽 NOTE 级别日志,保留 ERROR 和 WARNING —— 这是生产环境最常用且稳妥的配置。
为什么不是默认值 3?
MySQL 8.0 默认 log_error_verbosity=3,会记录大量非关键信息,比如:
-
[Note] [MY-010926] [Server] Access denied for user ...(频繁登录失败触发) -
[Note] [MY-013360] [Server] Plugin sha256_password is deprecated ...(插件弃用提醒) - 服务启动完成、SSL 加载成功等系统通知
这些内容对排障帮助小,但会快速撑大日志文件,干扰关键错误定位。
log_error_verbosity 的取值差异与影响
该参数只对 log_filter_internal(默认启用的内置过滤器)生效,且仅控制优先级过滤:
-
1:只写ERROR—— 日志极简,但可能漏掉重要预警(如主从连接中断前的WARNING) -
2:写ERROR+WARNING—— 平衡性最好,覆盖大多数故障征兆 -
3:写ERROR+WARNING+INFORMATION/NOTE—— 适合调试,不建议长期开启
注意:SYSTEM 级别消息(如 mysqld 启动/关闭)不受此参数控制,始终会记录。
线上改配置要注意什么?
临时生效用 SQL 命令即可,但必须确认当前 log_error_services 仍含 log_filter_internal:
- 先检查:
SELECT @@global.log_error_services;—— 正常应返回log_filter_internal;log_sink_internal - 再设置:
SET GLOBAL log_error_verbosity = 2; - 永久生效需写入
/etc/my.cnf的[mysqld]段:log_error_verbosity = 2 - 无需重启 MySQL,变量即时生效;但配置文件修改后,下次重启才固化
如果之前启用了 log_filter_dragnet 并卸载了 log_filter_internal,那 log_error_verbosity 就完全失效 —— 这种情况要先恢复默认过滤链。
真正容易被忽略的是:日志级别调低后,log_error_suppression_list 这个变量就失去意义了,它只在 log_filter_internal 启用时配合 log_error_verbosity 使用。别把它和 dragnet.log_error_filter_rules 混为一谈。











