理论知识错误日志内容 错误日志包含mysqld启动和关闭的时间信息,还包含诊断消息,如服务器启动和关闭期间以及服务器运行时出现的错误、警告和其他需要注意的信息。例如:如果mysqld检测到某个表需要检查或修复,会写入错误日志。 根据错误日志配置,错误消息还可能填充performanceschema。errorlog表,以便为日志提供SQL接口,使错误日志能够查询。 如果用mysqldsafe启动mysqld,mysqldsafe会将消息写入错误日志。例如,当mysqldsafe注意到mysqld异常退出时,它会重新启动mysqld,并将mysqld重新启动的消息写入错误日志。错误日志组件架构 在MySQL8。0中,错误日志使用MySQL组件(component)架构。错误日志系统由执行日志事件过滤和写出组件以及系统变量组成,该系统变量配置启用哪些组件来实现所需的日志记录。 基于组件的错误日志记录提供了以下功能:过滤器组件可以过滤日志事件,以影响写入的信息。日志事件由sink(写出)组件输出。可以启用多个写出组件,以将错误日志输出到多个目标。内置的过滤和写出组件结合起来实现默认的错误日志格式。支持JSON格式的日志记录。支持记录到操作系统日志。 logerrorservices系统变量控制为错误记录启用哪些日志组件。多个组件用逗号或分号分隔,日志系统按照此顺序依次执行。组件分过滤filter和写出sink两类。filter类组件过滤错误日志信息,sink类组件将错误日志写到不同的位置。filter类组件 过滤器组件过滤依据相关系统变量logfilterinternal错误事件的优先级及错误代码logerrorverbosity logerrorsuppressionlistlogfilterdragnet用户定义的规则dragnet。logerrorfilterrulessink类组件 系统变量logerror指定错误日志的缺省目的地,日志组件根据该系统变量决定自己的日志输出目的地。 sink类日志组件logerror值目的地logsinkinternal(缺省)filenamefilenamelogsinkinternalstderr控制台logsinkjsonstderr控制台logsinkjsonfilenamefilename。00。json filename。01。jsonlogsinkteststderr控制台logsinktestfilenamefilenamelogsinksyseventlogstderr系统日志logsinksyseventlogfilename系统日志2。运维操作查询当前的错误日志配置(示例为缺省值)mysqlSELECTGLOBAL。logerrorservices;GLOBAL。logerrorserviceslogfilterinternal;logsinkinternal查询已安装的组件mysqlselectfrommysql。component;componentidcomponentgroupidcomponenturn11file:componentlogsinksyseventlog1rowinset(0。00sec)配置错误日志写出json格式 安装sink组件logsinkjson,修改logerrorservices参数增加logsinkjson写出组件。mysqlINSTALLCOMPONENTfile:componentlogsinkjson;SETGLOBALlogerrorserviceslogfilterinternal;logsinkinternal;logsinkjson;配置logsinkinternal组件 目标:配置logsinkinternal组件只记录ERROR类信息。 方法:修改启动参数文件,调整logerrorverbosity参数。〔mysqld〕logerrorverbosity1 目标:配置logsinkinternal记录ERROR,WARNING,INFORMATION类错误,将WARNING,INFORMATION中错误号MY010001,MY10002过滤掉。 方法:修改启动参数文件,调整logerrorverbosity和logerrorsuppressionlist参数〔mysqld〕logerrorverbosity3logerrorsuppressionlistMY010001,10002配置使用logfilterdragnet过滤器 目标:配置过滤器,按照用户定义的规则过滤错误日志信息。 方法:使用logfilterdragnet,配置变量dragnet。logerrorfilterrules添加过滤规则。mysqlINSTALLCOMPONENTfile:componentlogfilterdragnet;SETGLOBALlogerrorserviceslogfilterdragnet;logsinkinternal;SETGLOBALdragnet。logerrorfilterrulesIFprioINFORMATIONTHENdrop。IFprioWARNINGTHENthrottle160。IFEXISTSsourcelineTHENunsetsourceline。;配置错误日志写入Linux系统日志 目标:将MySQL的错误日志写入Linux系统日志。 方法:使用logsinksyseventlog组件,将错误日志写入Linux系统日志。mysqlINSTALLCOMPONENTfile:componentlogsinksyseventlog;SETPERSISTlogerrorserviceslogfilterinternal;logsinksyseventlog;刷新错误日志 目标:保留原错误日志,让MySQL开始一个新的错误日志。 方法:使用FLUSHERRORLOGS或FLUSHLOGS或mysqladminflushlogs都可以关闭错误日志,然后重新创建错误日志,在此之前应该手工将错误日志改名或备份。备份日志文件mvgreatClusterlogserror19000。loggreatClusterlogserror19000。log。dateYmd刷新errorlogmysqladminflushlogs或mysqlflusherrorlogs;