MySQL8.0错误日志Error log
2022/4/7 8:19:08
本文主要是介绍MySQL8.0错误日志Error log,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 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 :)
这篇关于MySQL8.0错误日志Error log的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-02MySQL 3主集群搭建
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解