MySQL数据库频繁出现警告信息_检查日志等级与参数配置

阿磊大大_5182

阿磊大大_5182

2026-03-21

674人浏览

原创

mysql 5.7.2+ 已废弃 log_warnings,应改用 log_error_verbosity 控制警告日志级别,并排查 sql_mode 严格模式、慢查询日志配置及错误日志轮转等问题。

mysql数据库频繁出现警告信息_检查日志等级与参数配置

MySQL警告日志太多,log_warnings 参数早该停用了

MySQL 5.7.2+ 已废弃 log_warnings,继续配置它不仅无效,还会让启动时抛出警告:[Warning] 'log_warnings' is deprecated and will be removed in a future release.。这个参数原本控制是否记录警告到错误日志,但新版统一由 log_error_verbosity 管理。

实操建议:

  • 检查当前值:SELECT @@global.log_warnings; —— 如果返回非 0,说明配置残留
  • 立刻从 my.cnf 或 my.ini 中删掉 log_warnings=1 这类行
  • 改用 log_error_verbosity:值为 1(仅 error)、2(error + warning)、3(全量,含 note)
  • 动态生效需重启 MySQL;若用 SET GLOBAL log_error_verbosity = 2;,仅对新连接生效,且重启后丢失

为什么改了 log_error_verbosity 还在狂打警告?

常见错因是没关掉 sql_mode 里的严格模式相关项,比如 STRICT_TRANS_TABLES 或 STRICT_ALL_TABLES。它们会让本该静默的隐式类型转换、截断、零日期等行为直接触发 warning 级别日志。

实操建议:

  • 查当前模式:SELECT @@sql_mode;
  • 若含 STRICT_*,且业务能容忍宽松处理(如老系统迁移),可临时去掉:SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
  • 更稳妥的做法是定位具体 SQL:在警告日志里找类似 Incorrect integer value: '' for column 'age' at row 1 的提示,针对性修复应用层传参或建表默认值
  • 注意:sql_mode 是会话级变量,只改 GLOBAL 不影响已有连接,需同步改应用连接串或初始化语句

slow_query_log 开着也会刷警告日志?

是的。当开启慢查询日志但未设置 long_query_time(或设为 0),MySQL 会把每条语句都当作“慢查询”记录,而部分语句执行失败或被中断时,会连带写 warning 到错误日志,造成干扰。

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载

实操建议:

  • 确认慢查是否真需要全量记录:SELECT @@slow_query_log, @@long_query_time;
  • 生产环境 long_query_time 建议 ≥ 1.0(秒),避免日志爆炸;设为 0 仅限调试,且必须配合 log_output = 'TABLE' 避免文件 I/O 压力
  • 如果只是想监控性能瓶颈,优先用 performance_schema 查 events_statements_summary_by_digest,比日志更轻量、可聚合

错误日志路径和轮转没配好,警告堆满磁盘

MySQL 默认不自动轮转错误日志,mysqld 进程一直追加写入,一旦警告高频出现(比如批量导入时字段长度超限),单个 hostname.err 文件几天就能涨到几十 GB。

实操建议:

  • 确认当前路径:SELECT @@log_error;,确保目录有足够空间且 MySQL 进程有写权限
  • 启用轮转:Linux 下用 mysqladmin flush-logs 手动切分;或配 logrotate,注意 postrotate 调用 mysqladmin flush-logs 否则新日志仍写旧文件
  • Windows 下无原生轮转,建议用任务计划调用 mysqladmin -u root -p flush-logs,并删除 7 天前的 .err 文件
  • 别依赖 max_error_count —— 它只控制 SHOW ERRORS 输出条数,和日志文件无关

真正麻烦的是警告背后的真实问题:比如主从延迟触发的 Seconds_Behind_Master 波动警告,或是 InnoDB 缓冲池频繁刷脏页导致的 Buffer pool hit rate 提示。这些不是调个参数就能压下去的,得顺着日志里的上下文去查状态、查锁、查执行计划。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

mysql

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

2173

6

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.21

1319

5

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

775

5

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.19

2952

5

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.25

4948

4

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2023.08.08

1119

3

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.11

5211

4

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

2023.08.14

4582

7

mysql事务隔离级别
mysql事务隔离级别

mysql规范中定义了四种事务隔离级别,不同的隔离级别对事务的处理有所不同。本专题为大家提供mysql事务隔离级别相关的文章内容,大家可以免费体验。

2023.08.16

6054

11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 183人学习