这MySQL错误日志异常也太猛了吧

文章讲述了作者如何处理一个MySQL8.34数据库服务器的日志增长问题,通过修改log-error-verbosity设置,屏蔽无用的警告信息,从而降低日志文件大小,确保业务正常运行。
摘要由CSDN通过智能技术生成

作者:田逸(formyz)

一台核心业务数据库,版本为MySQL 8.34 社区服务器版。从上线以来,这个数据库服务器的错误日志增增加非常迅猛(如下图所示),每24小时能增加到10多个G的容量。

因为有故障报警,也还没有影响到业务的正常访问,有关人员不让重启MySQL服务。鉴于这个情况,我只好设置一个自动计划任务,在每晚的夜间定点清理这些日志。具体的操作时候在系统命令行,执行“crontab -e”,添加如下的文本行:

00 01 * * *  echo > /data/mysql8/data/mysql_db/mysql.log

保存并退出编辑模式,如果需要验证任务的正确性和有效性,可以把执行时间修改到相当近的一个时间点,然后对比任务执行前与执行后,错误日志文件“mysql.log”的大小,同时查看cron日志是否执行了这个计划任务,如下图所示。

春节放假,所有的人都回家过年,并且这个时候是访问低谷期,乘这个机会,我打算将这个问题彻底解决掉。征询相关人员的意见,问是否可以修改MySQL 选项文件,屏蔽掉没什么用的警告输出?得到的答复是“重启需要多久”?答曰:“数分钟足够”。

这个被定义的错误日志,大量记录的是什么东西呢?打开”mysql.log”大文件,发现全是些警告信息,用系统命令“tail -f mysql.log”,屏幕输出翻滚犹如电动机飞轮,具体的数据如下图所示。

这些警告信息表示用户账号使用了与默认认证方式“caching_sha2_password”不一致的“mysql_native_password”。处理的方式要么将所有的用户账号的密码认证方式改成“caching_sha2_password”,要么错误日志文件“mysql.log”不记录这些警告信息。由于用户账号比较多,设计到多个业务,相比之下,不记录警告信息更容易一些,反正这些警告信息没什么用(让它记录真正的错误日志,有助于排错)。

MySQL服务器所在的宿主系统Centos 7,文本编辑器打开选项文件“/etc/my.cnf”,在文本块【mysqld】里追加如下文本行。

log-error-verbosity=1

默认情况下,MySQL 8的“log-error-verbosity”的值为“3”,表示在错误日志里记录所有的“错误、警告和注释”。数字“2”代表记录“错误和警告”,而数字“1”则代表仅记录“错误”。

需要注意的是,在做选项文件修改前,记得先备份,这是常识,也是后悔药。检查没有书写错误以后,重启MySQL服务,然后检查本地MySQL服务是否正常,远程主从同步是否正常及是否存在延迟。

运行几分钟以后,再查看MySQL的错误日志,是否不再迅猛增长。通过一段时间观察,确实不再记录MySQL的警告日志,文件的增长速度也大大的降下来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

4/5$全真龙门

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值