• 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/GreatSQL

GitHub:

https://github.com/GreatSQL/GreatSQL

Bilibili:

https://space.bilibili.com/1363850082/video

微信&QQ群:

可搜索添加GreatSQL社区助手微信好友,发送验证信息“加群”加入GreatSQL/MGR交流微信群

QQ群:533341697

微信小助手:wanlidbc

本文由博客一文多发平台 OpenWrite 发布!

MySQL8.0错误日志Error log的更多相关文章

  1. MySQL 错误日志(Error Log)

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件.通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等. 这些日志能够帮助我们定位mysqld ...

  2. ubuntu1404下Apache2.4错误日志error.log路径位置

    首先打开/etc/apache2路径下的apache2.conf文件,找到ErrorLog如下 ErrorLog ${APACHE_LOG_DIR}/error.log 这里{APACHE_LOG_D ...

  3. mysql错误日志/var/log/mariadb/mariadb.log,二进制日志

    mariadb-日志 IT_luo关注0人评论65人阅读2018-10-15 08:59:03   mariadb日志 mariadb日志: 1.查询日志:query log: 2.慢查询日志:slo ...

  4. Navicat 12 连接 Mysql8.0 使用日志

    目前最新的Mysql8.0 + Navicat12,使用中常有一些棘手问题 解决了的都会贴出来,受益于小伙伴们 我们的目标是发现问题,解决问题,欢迎大家贴出自己使用时遇到的问题,集思广益 好了,上干货 ...

  5. MySQL8.0 redo日志系统优化

    背景 现在主流的数据库系统的故障恢复逻辑都是基于经典的ARIES协议,也就是基于undo日志+redo日志的来进行故障恢复.redo日志是物理日志,一般采用WAL(Write-Ahead-Loggin ...

  6. 2. SQL Server数据库状态监控 - 错误日志

    原文:2. SQL Server数据库状态监控 - 错误日志 无论是操作系统 (Unix 或者Windows),还是应用程序 (Web 服务,数据库系统等等) ,通常都有自身的日志机制,以便故障时追溯 ...

  7. nginx访问日志,错误日志参数说明

    说明: nginx日志主要有两种:访问日志.错误日志.其中访问日志记录客户端访问nginx的每一个请求,包含用户地域来源.跳转来源.使用终端.某个URL访问量等信息,访问日志格式可以自定义:错误日志则 ...

  8. MySQL日志文件之错误日志和慢查询日志详解

    今天天气又开始变得很热了,虽然很热很浮躁,但是不能不学习,我在北京向各位问好.今天给大家分享一点关于数据库日志方面的东西,因为日志不仅讨厌而且还很重要,在开发中时常免不了与它的亲密接触,就在前几天公司 ...

  9. Apache下error.log文件太大的处理方法

    清除error.log.access.log并限制Apache日志文件大小的方法,在网上搜了下相应的资料,并按照如下步骤做了一遍,网站恢复正常   清除error.log.access.log并限制A ...

随机推荐

  1. 148. Sort List - LeetCode

    Solution 148. Sort List Question 题目大意:对链表进行排序 思路:链表转为数组,数组用二分法排序 Java实现: public ListNode sortList(Li ...

  2. linux篇-linux面试题汇总

    Linux经典面试题,看看你会几题? 1. 在Linux系统中,以 文件 方式访问设备 . 2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统. 3. Linux文件系统 ...

  3. unity---公共模块MonoController

    公共模块 如果有很多类使用Update()函数,会导致性能浪费 如果函数统一在一个Update()中执行 代码 上述,需要将脚本挂载到物体上, 故新建了一个管理类MonoMgr Mgr另外的作用 可以 ...

  4. 什么是请求参数、表单参数、url参数、header参数、Cookie参数?一文讲懂

    最近在工作中对 http 的请求参数解析有了进一步的认识,写个小短文记录一下. 回顾下自己的情况,大概就是:有点点网络及编程基础,只需要加深一点点对 HTTP 协议的理解就能弄明白了. 先分享一个小故 ...

  5. [论文][表情识别]Towards Semi-Supervised Deep Facial Expression Recognition with An Adaptive Confidence Margin

    论文基本情况 发表时间及刊物/会议:2022 CVPR 发表单位:西安电子科技大学, 香港中文大学,重庆邮电大学 问题背景 在大部分半监督学习方法中,一般而言,只有部分置信度高于提前设置的阈值的无标签 ...

  6. Kubernetes client-go Informer 源码分析

    概述ControllerController 的初始化Controller 的启动processLoopHandleDeltas()SharedIndexInformersharedIndexerIn ...

  7. 为什么我在css里使用功能类优先

    前言 我想在我们开始的学CSS语法的时候,都是从以下的流程开始的: 1.写一个CSS类选择器: .my-class { } 2.往选择器里填充CSS语法: .my-class { display fl ...

  8. 6月6日,HTTP/3 正式发布了!

    经过了多年的努力,在 6 月 6 号,IETF (互联网工程任务小组) 正式发布了 HTTP/3 的 RFC, 这是超文本传输协议(HTTP)的第三个主要版本,完整的 RFC 超过了 20000 字, ...

  9. Spring Security整合企业微信的扫码登录,企微的API震惊到我了

    本文代码: https://gitee.com/felord/spring-security-oauth2-tutorial/tree/wwopen/ 现在很多企业都接入了企业微信,作为私域社群工具, ...

  10. JAVA 异常 基本知识

    异常 异常定义 异常是运行过程中出现的错误 人为错误:填写错误等 随机错误:网络中断.内存耗尽等 一个健壮的程序必须处理各种各样的错误 Java的异常是class Object Throwable E ...