log_error_verbosity=1仅记录error级别日志,如磁盘满、权限拒绝、innodb表空间加载失败等需紧急干预问题,过滤全部warning和note(如连接建立、插件加载成功、ip解析失败等),日志体积可降70%以上,但需修改配置文件并重启生效。

默认的 log_error_verbosity = 2 会记录大量无实际排障价值的 NOTE 级日志(比如连接建立、插件加载成功),导致日志膨胀且关键错误被淹没;把值设为 1 或 2 是最直接有效的“减冗余”手段。
log_error_verbosity=1 能砍掉哪些日志?
设为 1 后,MySQL 只写 ERROR 级别内容——比如磁盘满、权限拒绝、InnoDB 表空间无法加载、mysqld 启动失败等真正需要干预的问题。所有 WARNING 和 NOTE 都不落盘,日志体积通常能降 70% 以上。
- 常见被过滤掉的内容:
NOTE类如 “Starting MySQL server”、“Plugin 'xxx' is disabled”、“Aborted connection xxx to db: 'xxx'(非异常断连) -
WARNING类如 “IP address 'xxx' could not be resolved”、“Table cache hit rate is low” - 注意:
log_error_verbosity = 1不影响慢查询日志、二进制日志等其他日志开关
为什么不能只靠 SET GLOBAL 动态调整?
执行 SET GLOBAL log_error_verbosity = 1 确实能立刻生效,但重启后就失效——因为变量是 session 级还是 global 级,不影响其持久性。MySQL 8.0.22+ 更进一步:该变量被标记为只读,运行时执行会报错 Variable 'log_error_verbosity' is a read only variable。
- 必须改配置文件才可靠:在
[mysqld]段下写log_error_verbosity = 1 - 配置文件路径优先检查:
/etc/my.cnf、/etc/mysql/my.cnf、Docker 容器内/etc/mysql/conf.d/下的 .cnf 文件 - 改完必须重启服务:
systemctl restart mysql或mysqld_safe --defaults-file=/etc/my.cnf &
log_error_verbosity=1 的副作用和规避点
级别调低确实减少噪音,但也可能掩盖部分预警信号——比如主从复制中断在 verbosity=1 下只报一条 ERROR,而 =2 会多一行 WARNING 提示 IO 线程已停止,更易关联上下文。
- 生产环境建议:日常用
1,但监控告警应同时捕获SHOW SLAVE STATUS和performance_schema.replication_connection_status,别只依赖错误日志 - 排查具体问题时临时切回
3,查完立刻切回1,避免日志暴增填满磁盘 - 云数据库(如阿里云 RDS、腾讯云 CDB)通常禁用该参数动态修改,且配置文件不可见,只能通过控制台或 API 设置,需提前确认平台限制
真正起效的关键不是设哪个数字,而是确保 log_error 路径存在、MySQL 进程有写权限、且没有 SELinux/AppArmor 拦截——否则哪怕设成 3,日志也根本不会产生。











