MySQL8.0错误日志Error log

MySQL8.0错误日志Error log,第1张

错误日志包含mysqld启动和关闭的时间信息,还包含诊断消息,如服务器启动和关闭期间以及服务器运行时出现的错误、警告和其他需要注意的信息。例如:如果mysqld检测到某个表需要检查或修复,会写入错误日志

根据错误日志配置,错误消息还可能填充performance_schema.error_log表,以便为日志提供SQL接口,使错误日志能够查询。

如果用mysqld_safe启动mysqld,mysqld_safe会将消息写入错误日志。例如,当mysqld_safe注意到mysqld异常退出时,它会重新启动mysqld,并将mysqld重新启动的消息写入错误日志。

在MySQL 8.0中,错误日志使用MySQL组件(component) 架构。错误日志系统由执行日志事件过滤和写出组件以及系统变量组成,该系统变量配置启用哪些组件来实现所需的日志记录。

基于组件的错误日志记录提供了以下功能:

log_error_services系统变量控制为错误记录启用哪些日志组件。多个组件用逗号或分号分隔,日志系统按照此顺序依次执行。组件分过滤filter和写出sink两类。filter类组件过滤错误日志信息,sink类组件将错误日志写到不同的位置。

过滤器组件 过滤依据 相关系统变量 log_filter_internal 错误事件的优先级及错误代码 log_error_verbosity

log_error_suppression_listlog_filter_dragnet 用户定义的规则 dragnet.log_error_filter_rules

系统变量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.jsonlog_sink_test stderr 控制台log_sink_test file_name file_name log_sink_syseventlog stderr 系统日志log_sink_syseventlog file_name 系统日志

安装sink组件log_sink_json,修改log_error_services参数增加log_sink_json写出组件。

目标:配置log_sink_internal组件只记录ERROR类信息。

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

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

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

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

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

目标:将MySQL的错误日志写入Linux系统日志。

方法:使用log_sink_syseventlog组件,将错误日志写入Linux系统日志。

目标:保留原错误日志,让MySQL开始一个新的错误日志。

方法:使用FLUSH ERROR LOGS 或 FLUSH LOGS 或 mysqladmin flush-logs都可以关闭错误日志,然后重新创建错误日志,在此之前应该手工将错误日志改名或备份。

如果你什么都没改过,

如果是windows下,一般是安装目录下的data目录下 扩展名是.err那个文件,你可以打开安装目录下的my.ini文件检查一下

如果是linux下,一般是/var/log/mysqld.log,你最好用cat /etc/my.cnf看看

启动Mysql提示ERROR! The server quit without updating PID file (/usr/local/var/mysql/xxxx.local.pid).

1、查看mysql错误日志:打开/usr/local/var/mysql/xxxx.err或者xxxx.local.err文件。

2、问题应该是某个程序占用了mysql的默认端口3306。

3、查看端口使用情况lsof -i:3306,发现是一个用户名为_mysql启动了mysqld指令占用了3306,感觉现象非常奇怪,不清楚为什么会有这个用户组,为什么会启动mysqld,由于这个电脑是公司其他同事转移资产到的我名下,所以有可能是之前用户或者公司it装了什么服务导致的。

4、首先尝试干掉进程:sudo kill xxxx,结果发现当kill后,还会重新启动。

5、尝试修改mysql默认启动端口,Baidu上有人告诉修改/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist文件

添加<string>--port=3307</string>保存,先重新启动mysql服务,发现问题依然存在,发现配置没有起作用,默认端口依然是3306,然后考虑重新启动电脑,看看是否可以修改占用默认端口的配置。

6、重启后再次查看3306端口占用情况,发现确实不存在了。但是发现启动mysql服务时,依然存在问题:

仔细观察发现,这个占用和plist中的mysql配置一样的,所以可以确定每次启动计算机后,会按默认配置执行一个mysqld。

7、不清楚为什么会按com.oracle.oss.mysql.mysqld.plist配置执行mysqld,于是把注意力放在了Mac启动上。

8、Mac的启动原理是:

看到这里就明白了,原来LaunchDaemons里面放的是Mac启动时的一些启动服务,

9、System/Library和/Library和~/Library目录的区别:

10、System/Library和/Library和~/Library目录的区别:

11、有了上面的结果,于是把注意力放在了com.oracle.oss.mysql.mysqld.plist上,每个Mac启动中都有么,这个是如何添加的。首先查看了家里的其他苹果电脑,发现都没有这个plist文件,于是开始研究这个文件的产生原因。

12、经过Baidu怀疑这个文件应该是之前用dmg安装包安装的mysql产生的,在设置中也发现了残留信息

于是果断把自动启动去掉,重启计算机。

13、重启后,发现无论是3306还是3307端口上都没有mysql服务了,于是运行mysql.server start,这次终于看见了Starting MySQL . SUCCESS!

14、删除com.oracle.oss.mysql.mysqld.plist文件,重启电脑后,发现设置中仍然还有MySQL的控制选项。

15、MySQL dmg安装方式的卸载方法:

至此,这个问题算是完美解决了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8361933.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存