• 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_namefile_name
log_sink_internalstderr控制台
log_sink_jsonstderr控制台
log_sink_jsonfile_namefile_name.00.json
file_name.01.json
log_sink_teststderr控制台
log_sink_testfile_namefile_name
log_sink_syseventlogstderr系统日志
log_sink_syseventlogfile_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 logmysqladmin 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 公布!