ToB企服应用市场:ToB评测及商务社交产业平台

标题: 图文结合带你搞懂MySQL日志之Error Log(错误日志) [打印本页]

作者: 丝    时间: 2022-12-22 19:07
标题: 图文结合带你搞懂MySQL日志之Error Log(错误日志)
往期回顾:
什么是错误日志

错误日志(Error Log) 是 MySQL 中最常用的一种日志,主要记录 MySQL 服务器启动和停止过程中的信息、服务器在运行过程中发生的故障和异常情况等。
错误日志记录了啥

错误日志包含 mysqld 启动和关闭的时间信息,还包含诊断消息,如服务器启动和关闭期间以及服务器运行时出现的错误、警告和其他需要注意的信息。
例如:如果 mysqld 检测到某个表需要检查或修复,会写入错误日志。
根据错误日志配置,错误消息还可能填充 performance_schema.error_log 表,以便为日志提供 SQL 接口,使错误日志能够查询。
如果用 mysqld_safe 启动 mysqld,mysqld_safe 会将消息写入错误日志。
例如,当 mysqld_safe 注意到 mysqld 异常退出时,它会重新启动 mysqld,并将 mysqld 重新启动的消息写入错误日志。
怎么启动错误日志

在MySQL数据库中,错误日志功能是默认开启的。而且,错误日志无法被禁止。
默认情况下,错误日志存储在MySQL数据库的数据文件夹下,名称默认为mysqld.log(Linux系统)或hostname.err(mac系统)。如果需要制定文件名,则需要在my.cnf或者my.ini中做如下配置:
  1. [mysqld]
  2. log-error=[path/[filename]] #path为日志文件所在的目录路径,filename为日志文件名
复制代码
修改配置项后,需要重启 MySQL 服务以生效。
查看日志

MySQL错误日志是以文本文件形式存储的,可以使用文本编辑器直接查看。
查询错误日志的存储路径:
  1. mysql> show variables like 'log_err%';
  2. +----------------------------+----------------------------------------+
  3. | Variable_name              | Value                                  |
  4. +----------------------------+----------------------------------------+
  5. | log_error                  | /var/log/mysqld.log                    |
  6. | log_error_services         | log_filter_internal; log_sink_internal |
  7. | log_error_suppression_list |                                        |
  8. | log_error_verbosity        | 2                                      |
  9. +----------------------------+----------------------------------------+
  10. 4 rows in set (0.00 sec)
复制代码
参数解析

  1. mysql> SELECT @@GLOBAL.log_error_services;
  2. +----------------------------------------+
  3. | @@GLOBAL.log_error_services            |
  4. +----------------------------------------+
  5. | log_filter_internal; log_sink_internal |
  6. +----------------------------------------+
  7. 1 row in set (0.00 sec)
复制代码
log_error_verbosity ValuePermitted Message Priorities1ERROR2ERROR, WARNING3ERROR, WARNING, INFORMATION
log_timestamps控制日志显示时间

在MySQL 5.7.2 新增了 log_timestamps 这个参数,该参数主要是控制 error log、genera log,等等记录日志的显示时间参数。
在 5.7.2 之后改参数为默认 UTC 这样会导致日志中记录的时间比中国这边的慢,导致查看日志不方便。
  1. mysql> SHOW GLOBAL VARIABLES LIKE 'log_timestamps';
  2. +----------------+-------+
  3. | Variable_name  | Value |
  4. +----------------+-------+
  5. | log_timestamps | UTC   |
  6. +----------------+-------+
  7. 1 row in set (0.00 sec)
复制代码
可以看到使用的时间是UTC时间,UTC是世界公用的一个时间,那么我们本地时间和UTC时间就必然存在一个换算关系。按北京时间来算,北京时间将比UTC时间快8个小时
修改方法:
  1. 1.set global log_timestamps=system;
  2. 2.修改后可以在配置文件再添加
  3.   [mysqld]
  4.   log_timestamps=system
复制代码
  1. 1.set global log_timestamps=system;
复制代码
删除\刷新日志

对于很久以前的错误日志,数据库管理员查看这些错误日志的可能性不大,可以将这些错误日志删除,以保证 MySQL 服务器上的硬盘空间。MySQL 的错误日志是以文本文件的形式存储在文件系统中的,可以直接删除。
  1. #刷新日志
  2. [root@kaito log]# mysqladmin -uroot -p flush-logs
  3. Enter password:
  4. mysqladmin: refresh failed; error: 'Could not open file '/var/log/mysqld.log' for error logging.'
复制代码
官网提示:

补充操作:
  1. install -omysql -gmysql -m0644 /dev/null /var/log/mysqld.log
复制代码
·flush-logs·指令操作:
参考文章

《MySQL是怎样运行的--从根儿上理解MySQL》—小孩子4919

Enjoy GreatSQL
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4