环境信息:centos7.5 + mysql 5.7.30
今天业务反馈某业务数据连接不上,登录看了一下,发现数据库服务已经挂了(由于特殊原因,该库没有监控,并且是单点--成本原因,刺激不?!)。于是查看日志,一直在反复刷下图信息。
解决尝试:
1、重启--失败
2、修改参数重启--失败
3、查看系统日志-- 发现有oom的提示,增加主机资源配置重启--失败(oom的时间没有对准)
仔细分析现象,查看日志。
分析过程:
ps -ef | grep mysql 发现进程不在了,但是隔一会儿又会出现,pid一直在变化。 于是,我查了一下mysqld.service的配置,发现了如下启动策略:
我注释掉该启动策略,mysqld的进程也不闪现了。 手动重启一下,观察日志,报错如下:
结论:user表损坏。
解决方案: 1、mysql参数my.cnf 中的[mysqld]下添加 skip-grant-tables 2、启动mysql
service mysqld start
3、登录mysql客户端
mysql > repair table mysql.user;
4、注释掉参数中的 skip-grant-tables,重启服务,问题解决。
service mysqld restart