log_error_verbosity参数用于控制错误日志中记录的信息详细程度。
本文基于MySQL8.4.3版本。MySQL8.4官方参考手册:https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html
log_error_verbosity = 1
级别1(ERROR):仅记录需要注意的重要事件,包括但不限于实际的错误,这些错误通常意味着服务器无法继续运行或者某些关键功能出现了问题。建议生产环境使用,以减少日志文件的大小。
log_error_verbosity = 2
级别2(ERROR, WARNING):从MySQL8.0.4版本开始默认值为2。记录重要事件和警告信息,除重要事件信息之外,还包括可能不会立即导致问题但需要注意的警告信息。建议生产环境使用,以减少日志文件的大小,同时生成错误和警告信息。
log_error_verbosity = 3
级别3(ERROR, WARNING, INFORMATION):记录重要事件、警告和其它信息,其它信息(如数据库连接信息)等。适用于需要全面了解服务器活动的场景,便于调试和深入分析问题。建议开发环境使用。
演示示例
基于wlnmp源,安装MySQL8.4.3版本验证log_error_verbosity参数实际效果。
当log_error_verbosity = 1时
在/etc/my.cnf中配置一个错误的参数
1 |
unknown_parameter = 1 |
重启MySQL
1 |
/etc/init.d/mysql restart |
查看/data/mysql/error.log日志,可以看到以下[ERROR]内容
[ERROR] [MY-000067] [Server] unknown variable 'unknown_parameter=1'.
[ERROR] [MY-010119] [Server] Aborting
当log_error_verbosity = 2时
在/etc/my.cnf中配置一个弃用的参数(8.0.4版本中弃用innodb_undo_tablespaces)
1 |
innodb_undo_tablespaces = 127 |
重启MySQL
1 |
/etc/init.d/mysql restart |
查看/data/mysql/error.log日志,可以看到以下[Warning]内容
[Warning] [MY-013267] [InnoDB] The setting INNODB_UNDO_TABLESPACES is deprecated and is no longer used. InnoDB always creates 2 undo tablespaces to start with. If you need more, please use CREATE UNDO TABLESPACE.
当log_error_verbosity = 3时
重启MySQL
1 |
/etc/init.d/mysql restart |
连接MySQL,故意输错密码
1 |
mysql -uroot -pwhsir |
查看/data/mysql/error.log日志,可以看到以下[Note]内容
[Note] [MY-010926] [Server] Access denied for user 'root'@'localhost' (using password: YES)
注意事项
1、日志文件管理:级别越高,日志越详细,日志文件越大,因此需要定期监控和清理日志文件。
2、性能影响:级别越高,过多的日志记录可能会对系统性能产生一定影响,特别是高负载场景下。
3、日志用途:主要用于记录服务器运行时的异常情况,如连接错误、硬件故障、配置问题等,而不是用户的输入错误。
总结
通过调整不同的log_error_verbosity级别,管理员可以根据需要调整MySQL服务器日志的详细程度,以便更好地进行调试和管理。这样能够确保在不同的环境中及时发现和解决问题。
附,MySQL my.cnf配置文件生成器:https://dbcnf.wlnmp.com/
原文链接:MySQL log_error_verbosity参数介绍,转载请注明来源!