共计 3601 个字符,预计需要花费 10 分钟才能阅读完成。
- GreatSQL 社区原创内容未经受权不得随便应用,转载请分割小编并注明起源。
理论知识
谬误日志内容
谬误日志蕴含 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 |
+----------------------------------------+
查问已装置的组件
mysql> select * from mysql.component;
+--------------+--------------------+----------------------------------------+
| component_id | component_group_id | component_urn |
+--------------+--------------------+----------------------------------------+
| 1 | 1 | file://component_log_sink_syseventlog |
+--------------+--------------------+----------------------------------------+
1 row in set (0.00 sec)
配置谬误日志写出 json 格局
装置 sink 组件 log_sink_json,批改 log_error_services 参数减少 log_sink_json 写出组件。
mysql>
INSTALL COMPONENT 'file://component_log_sink_json';
SET GLOBAL log_error_services = 'log_filter_internal; log_sink_internal; log_sink_json';
配置 log_sink_internal 组件
指标:配置 log_sink_internal 组件只记录 ERROR 类信息。
办法:批改启动参数文件,调整 log_error_verbosity 参数。
[mysqld]
log_error_verbosity=1
指标:配置 log_sink_internal 记录 ERROR, WARNING, INFORMATION 类谬误,将 WARNING, INFORMATION 中谬误号 MY-010001,MY-10002 过滤掉。
办法:批改启动参数文件,调整 log_error_verbosity 和 log_error_suppression_list 参数
[mysqld]
log_error_verbosity=3
log_error_suppression_list='MY-010001,10002'
配置应用 log_filter_dragnet 过滤器
指标:配置过滤器,依照用户定义的规定过滤谬误日志信息。
办法:应用 log_filter_dragnet,配置变量 dragnet.log_error_filter_rules 增加过滤规定。
mysql>
INSTALL COMPONENT 'file://component_log_filter_dragnet';
SET GLOBAL log_error_services = 'log_filter_dragnet; log_sink_internal';
SET GLOBAL dragnet.log_error_filter_rules = '
IF prio>=INFORMATION THEN drop.
IF prio>=WARNING THEN throttle 1/60.
IF EXISTS source_line THEN unset source_line.
';
配置谬误日志写入 Linux 系统日志
指标:将 MySQL 的谬误日志写入 Linux 系统日志。
办法:应用 log_sink_syseventlog 组件,将谬误日志写入 Linux 系统日志。
mysql>
INSTALL COMPONENT 'file://component_log_sink_syseventlog';
SET PERSIST log_error_services = 'log_filter_internal; log_sink_syseventlog';
刷新谬误日志
指标:保留原谬误日志,让 MySQL 开始一个新的谬误日志。
办法:应用 FLUSH ERROR LOGS 或 FLUSH LOGS 或 mysqladmin flush-logs 都能够敞开谬误日志,而后从新创立谬误日志,在此之前应该手工将谬误日志改名或备份。
# 备份日志文件
mv /greatCluster/logs/error19000.log /greatCluster/logs/error19000.log.`date +%Y%m%d`
#刷新 error log
mysqladmin flush-logs
或
mysql>flush error logs;
Enjoy GreatSQL :)
# 对于 GreatSQL
GreatSQL 是由万里数据库保护的 MySQL 分支,专一于晋升 MGR 可靠性及性能,反对 InnoDB 并行查问个性,是实用于金融级利用的 MySQL 分支版本。
Gitee:
https://gitee.com/GreatSQL/Gr…
GitHub:
https://github.com/GreatSQL/G…
Bilibili:
https://space.bilibili.com/13…
微信 &QQ 群:
可搜寻增加 GreatSQL 社区助手微信好友,发送验证信息“加群”退出 GreatSQL/MGR 交换微信群
QQ 群:533341697
微信小助手:wanlidbc
本文由博客一文多发平台 OpenWrite 公布!