必须先安装component_log_sink_json组件,再配置log_error_services,否则json日志不会生成;仅改配置不装组件,日志仍为纯文本。

log_sink_json 必须先 INSTALL 才能生效
只改 log_error_services 不装组件,JSON 日志永远不会出现。MySQL 8.0 把 JSON 输出能力做成可加载组件,不是开个开关就行。
- 执行
INSTALL COMPONENT 'file://component_log_sink_json';—— 路径前缀file://缺一不可,不能写成file:///或本地绝对路径 - 若报错
Component not found,查SELECT @@plugin_dir;,确认该目录下存在component_log_sink_json.so(Linux)或.dll(Windows) - 安装需
SYSTEM_VARIABLES_ADMIN和COMPONENT_ADMIN权限,普通 DBA 权限不够 - 安装后无需重启,但后续所有配置都依赖它;卸载会直接中断 JSON 日志输出
log_error_services 链必须含 filter + sink,顺序不能错
log_error_services 是执行链,不是列表。过滤器必须在写出器之前,否则未过滤的日志全量进 JSON,体积暴增且含大量无用 [Note]。
基于三引擎设计,从微信文章、新闻和博客网页提取干净内容,支持标题作者日期元数据,多格式和批量处理。
- 最小可用组合:
log_filter_internal; log_sink_json——log_filter_internal在前负责按log_error_verbosity过滤,log_sink_json在后负责格式化输出 - 错误写法:
log_sink_json; log_filter_internal→ 过滤器失效,JSON 文件里塞满启动日志和插件提示 - 想同时保留文本日志?加一个
log_sink_internal即可:log_filter_internal; log_sink_internal; log_sink_json - 多个 sink 会各自输出:
log_sink_internal写入log_error指定路径,log_sink_json自动生成error.log.00.json、error.log.01.json等滚动文件
log_error 路径决定 JSON 文件位置和权限成败
JSON 写入器完全复用 log_error 的路径和权限设置。路径不存在、权限不对、SELinux 拦截,都会导致 JSON 文件静默失败——不报错、不落盘、连空文件都不创建。
-
log_error必须是绝对路径,例如log_error = /var/log/mysql/error.log;写成error.log会被拼到datadir下,而datadir通常没日志写入权限 - 手动创建目录并授权:
sudo mkdir -p /var/log/mysql && sudo chown mysql:mysql /var/log/mysql(Linux);Windows 下需给 MySQL80 服务账户“写入+修改”权限 - 验证是否真正生效:
mysqld --defaults-file=/etc/my.cnf --verbose --help | grep "log_error",输出必须是你设的绝对路径 - SELinux 启用时(如 CentOS/RHEL),还需运行
sudo setsebool -P mysqld_disable_trans on或调整上下文为mysqld_log_t
log_error_verbosity=2 是结构化日志的实用底线
JSON 格式解决的是解析问题,但内容质量取决于过滤粒度。默认 log_error_verbosity = 3 会让 JSON 里塞满 [Note],反而增加分析成本。
-
log_error_verbosity = 2只保留ERROR和WARNING—— 崩溃前的内存分配失败、线程异常终止、连接拒绝等关键线索全在这里 -
log_error_verbosity = 1太激进,漏掉预警信号(比如主从 IO 线程退出前的WARNING) - 该参数只对
log_filter_internal生效;如果启用了log_filter_dragnet,log_error_verbosity就完全无效 - 临时调参用
SET GLOBAL log_error_verbosity = 2,永久生效写入配置文件:log_error_verbosity = 2([mysqld] 段)
INSTALL 是否成功、log_error_services 链是否干净、log_error 路径是否真实可达、log_error_verbosity 是否匹配排障目标——四个环节缺一不可,任一环节断开,你看到的就只是空目录或一堆无法解析的文本。










