前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL8.0错误日志Error log

MySQL8.0错误日志Error log

原创
作者头像
GreatSQL社区
发布2022-04-06 10:04:20
1.6K0
发布2022-04-06 10:04:20
举报
文章被收录于专栏: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.jsonfile_name.01.json

log_sink_test

stderr

控制台

log_sink_test

file_name

file_name

log_sink_syseventlog

stderr

系统日志

log_sink_syseventlog

file_name

系统日志

2. 运维操作

查询当前的错误日志配置(示例为缺省值)

代码语言:javascript
复制
mysql> SELECT @@GLOBAL.log_error_services;
+----------------------------------------+
| @@GLOBAL.log_error_services         |
+----------------------------------------+
| log_filter_internal; log_sink_internal |
+----------------------------------------+

查询已安装的组件

代码语言:javascript
复制
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写出组件。

代码语言:javascript
复制
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参数。

代码语言:javascript
复制
[mysqld]
log_error_verbosity=1   

目标:配置log_sink_internal记录ERROR, WARNING, INFORMATION类错误,将 WARNING, INFORMATION中错误号MY-010001,MY-10002过滤掉。

方法:修改启动参数文件,调整log_error_verbosity和log_error_suppression_list参数

代码语言:javascript
复制
[mysqld]
log_error_verbosity=3   
log_error_suppression_list='MY-010001,10002'

配置使用log_filter_dragnet过滤器

目标:配置过滤器,按照用户定义的规则过滤错误日志信息。

方法:使用log_filter_dragnet,配置变量dragnet.log_error_filter_rules添加过滤规则。

代码语言:javascript
复制
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系统日志。

代码语言:javascript
复制
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都可以关闭错误日志,然后重新创建错误日志,在此之前应该手工将错误日志改名或备份。

代码语言:javascript
复制
#备份日志文件
mv /greatCluster/logs/error19000.log /greatCluster/logs/error19000.log.`date +%Y%m%d`
#刷新error log
mysqladmin flush-logs
或
mysql>flush error logs;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 理论知识
    • 错误日志内容
      • 错误日志组件架构
        • filter类组件
          • sink类组件
          • 2. 运维操作
            • 查询当前的错误日志配置(示例为缺省值)
              • 查询已安装的组件
                • 配置错误日志写出json格式
                  • 配置log_sink_internal组件
                    • 配置使用log_filter_dragnet过滤器
                      • 配置错误日志写入Linux系统日志
                        • 刷新错误日志
                        相关产品与服务
                        云数据库 SQL Server
                        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档