MySQL8.0错误日志Error log介绍
理论知识错误日志内容
错误日志包含 mysqld 启动和关闭的时间信息,还包含诊断消息,如服务器启动和关闭期间以及服务器运行时出现的错误、警告和其他需要注意的信息。
例如:如果 mysqld 检测到某个表需要检查或修复,会写入错误日志。
根据错误日志配置,错误消息还可能填充 performance_schema.error_log
表,以便为日志提供SQL接口,使错误日志能够查询。
如果用 mysqld_safe 启动 mysqld,mysqld_safe 会将消息写入错误日志。
例如,当 mysqld_safe 注意到 mysqld 异常退出时,它会重新启动 mysqld,并将 mysqld 重新启动的消息写入错误日志。
错误日志组件架构
在 MySQL 8.0 中,错误日志使用 MySQL 组件(component) 架构。
错误日志系统由执行日志事件过滤和写出组件以及系统变量组成,该系统变量配置启用哪些组件来实现所需的日志记录。
基于组件的错误日志记录提供了以下功能:
- 过滤器组件可以过滤日志事件,以影响写入的信息。
- 日志事件由sink(写出)组件输出。可以启用多个写出组件,以将错误日志输出到多个目标。
- 内置的过滤和写出组件结合起来实现默认的错误日志格式。
- 支持JSON格式的日志记录。
- 支持记录到操作系统日志。
log_error_services系统变量控制为错误记录启用哪些日志组件。
多个组件用逗号或分号分隔,日志系统按照此顺序依次执行。组件分过滤filter和写出sink两类。filter类组件过滤错误日志信息,sink类组件将错误日志写到不同的位置。
filter类组件
过滤器组件 | 过滤依据 | 相关系统变量 |
---|---|---|
log_filter_internal | 错误事件的优先级及错误代码 | log_error_verbosity log_error_suppression_list |
log_filter_dragnet | 用户定义的规则 | dragnet.log_error_filter_rules |
sink类组件
系统变量log_error指定错误日志的缺省目的地,日志组件根据该系统变量决定自己的日志输出目的地。
sink类日志组件 | log_error值 | 目的地 |
---|---|---|
log_sink_internal(缺省) | file_name | file_name |
log_sink_internal | stderr | 控制台 |
log_sink_json | stderr | 控制台 |
log_sink_json | file_name | file_name.00.json file_name.01.json |
log_sink_test | stderr | 控制台 |
log_sink_test | file_name | file_name |
log_sink_syseventlog | stderr | 系统日志 |
log_sink_syseventlog | file_name | 系统日志 |
2. 运维操作查询当前的错误日志配置(示例为缺省值)
mysql> SELECT @@GLOBAL.log_error_services;+----------------------------------------+| @@GLOBAL.log_error_services |+----------------------------------------+| log_filter_internal; log_sink_internal |+----------------------------------------+